Olá gostaria se possível entrar em contato com o instrutor Paulo Alves Jr de Spring para tirar uma dúvida sobre o curso!
Olá gostaria se possível entrar em contato com o instrutor Paulo Alves Jr de Spring para tirar uma dúvida sobre o curso!
Olá Nilo! Pode postar a sua dúvida aqui mesmo que nossos instrutores e moderadores vão te ajudar!
Abraços
Olá Philippe no curso de Spring Mvc ele não ensina como fazer o formulário de cadastro do usuário com a role na view, então fiz o formulário mas esta faltando dizer q role ele pertence e não encontrei nada a respeito de como adicionar essa role no formulário poderia me ajudar???
Oi Nilo, coloca o código do seu formulário aqui?
Olá Philippe vou mostrar os passos que estou fazendo até chegar na view ok?!
Código Controller:
@Controller
public class AdminController {
private long adminId;
@Autowired
private UsuarioDAO usuarioDao;
@RequestMapping("/admin")
public String admin(){
Usuario user = (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
this.adminId = user.getId();
System.out.println(this.adminId);
return "admin/admin";
}
@RequestMapping("admin/formEmp")
public ModelAndView prorpietario(){
ModelAndView mv = new ModelAndView("admin/formularioEmpresa");
return mv;
}
@PostMapping("/formEmp")
public ModelAndView criarProprietario(Usuario usu){
System.out.println(usu.toString());
usuarioDao.salvar(usu);
long proprietario = 2;
usu.getId();
System.out.println(usu.getId());
usuarioDao.cadRole(usu.getId(), proprietario);
return new ModelAndView("redirect:admin/formEmp");
}
}
Codigo UsuarioDao:
@Repository
@Transactional
public class UsuarioDAO {
@PersistenceContext
private EntityManager manager;
public void salvar(Usuario usuario){
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String pass = passwordEncoder.encode(usuario.getSenha());
usuario.setSenha(pass);
manager.persist(usuario);
}
public void cadRole(long usuario_id, long role_id){
String query = "insert into UsuarioId values(id_usuario, id_role) VALUES (?,?)";
manager.createNativeQuery(query)
.setParameter(1, usuario_id)
.setParameter(2, role_id)
.executeUpdate();
}
}
Código Entidade Usuario:
@Entity
public class Usuario implements UserDetails {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String nome;
private String email;
private String senha;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "usuario_role", joinColumns = @JoinColumn(name = "id_usuario")
, inverseJoinColumns = @JoinColumn(name = "id_role"))
private List<Role> roles = new ArrayList<>();
// gets e sets...
}
Codigo Entidade Role:
@Entity
public class Role implements GrantedAuthority{
private static final long serialVersionUID = 1L;
@Id
private long id;
@Enumerated(EnumType.STRING)
private RoleName nome;
gets e sets...
}
Codigo da view:
<form action="/meuatendimento/formEmp" method="POST">
<div>
<label>Nome</label>
<input type="text" name="nome">
</div>
<div>
<label>email</label>
<input type="text" name="email">
</div>
<div>
<label>senha</label>
<input type="password" name="senha">
</div>
<div>
<input type="checkbox" name="administrador" value="id">
<label for="administrador">Administrador</label>
</div>
<button type="submit">Cadastrar</button>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
</form>