Как реализовать механизм маршрутизации на уровне пользователя в Springboot - PullRequest
0 голосов
/ 02 мая 2019

Я занимаюсь разработкой продуктовой системы с тремя уровнями пользователя (администратор, продюсер, клиент).Как настроить эти роли и сопоставить их с пользователями?

Я пробовал иметь два класса сущностей (пользователь и роль) и некоторую форму сопоставления с пользователем.Я использую базу данных MySQL, чтобы справиться с этим.

   //user service class
    @Service //this annotation creates this class as a
// bean and exposes it to the application context.
    public class UserService {
    //so i'm injecting the UsersRepository
    @Autowired
    private UserRepository userRepository;
    //then a method to insert a new user.
    //User here carries all the fields of the user entity/model since we      are creating a user
    public void createClient(User user){
        //but first we hash the password for security purposes.
        BCryptPasswordEncoder encoder= new BCryptPasswordEncoder();
        user.setPassword(encoder.encode(user.getPassword()));
        //creating roles
        Role userRole = new Role("CLIENT");//we create a role type client
        //a user can then take a list of roles
        List<Role> roles = new ArrayList<>();//list of roles
        roles.add(userRole);//add client role type to the list
        user.setRoles(roles);//set a user to a role type
        userRepository.save(user);//save the user to the database.
    }
    public void createSupplier(User user){
        //but first we hash the password for security purposes.
        BCryptPasswordEncoder encoder= new BCryptPasswordEncoder();
        user.setPassword(encoder.encode(user.getPassword()));
        //creating roles
        Role userRole = new Role("SUPPLIER");//we create a role type client
        //a user can then take a list of roles
        List<Role> roles = new ArrayList<>();//list of roles
        roles.add(userRole);//add client role type to the list
        user.setRoles(roles);//set a user to a role type
        userRepository.save(user);//save( save is a crudrepository method) the user to the database.
    }

//controller class with role objects to be bound with thyme-leaf fields.
  public User user;

    @GetMapping(value="newUser")
    public String newUser(Model model){
        model.addAttribute("user", new User());
        model.addAttribute("ROLE", userRoles());

        return "pages/index";
    }

    @PostMapping(value="/registerUser")
    public String createUser(@ModelAttribute(value = "user") User user){

        //if the user selects client
       userService.createClient(user);


       //if the user selects supplier
        userService.createSupplier(user);                                           

    return "pages/login";
    }
    @RequestMapping(value="/showForm",method = RequestMethod.GET)
    public ModelAndView index(){
        User user=new User();
        ModelAndView mv=new ModelAndView();
    mv.addObject("user",user);
    mv.setViewName("fragments/index");
        return mv;
   }

    private List<String> userRoles(){
        List<String> ROLE = new ArrayList<>();
        ROLE.add("CLIENT");
        ROLE.add("SUPPLIER");

        return ROLE;
    }

Я ожидаю, что система правильно сохранит пользователя с ролью пользователя, выбранной в форме.Система вообще не спасает пользователя.Мой полный код здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...