Olá gostaria se possível entrar em contato com o instrutor Paulo Alves Jr de Spring para tirar uma dúvida sobre o curso!
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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>