Caso de uso - signup

Cadastro de usuário no sistema.

Cenário principal:

  1. [IN] O usuário informa primeiro nome, sobrenome, e-mail e senha

Exceção 1.1: Erro de validação

  1. [OUT] O sistema informa os erros de validação

Informações complementares

Critérios de validação de usuário

  • Nome: campo requerido

  • E-mail: e-mail válido

  • Senha: mínimo 8 caracteres

Primeira coisa é retirar o @PreAuthorize de Admin para que qualquer pessoa possa se registrar.

Na requisição Postman, retirar a lista de roles que é passada, afinal ele vai ser gerada automaticamente pelo backend.

No UserInsertDTO, passar @NotBlank, @Size na password.

No service, precisamos settar a role no insert, mas antes disso, depois de usar o copy, dar clear, veja:

	@Transactional
	public UserDTO insert(UserInsertDTO dto) {
		User entity = new User();
		copyDtoToEntity(dto, entity);

		//clear
		entity.getRoles().clear();
		//settando role manualmente, usando repository
		Role role = roleRepository.findByAuthority("ROLE_OPERATOR");
		entity.getRoles().add(role);

		entity.setPassword(passwordEncoder.encode(dto.getPassword()));

		entity = repository.save(entity);

		return new UserDTO(entity);
	}

Fazer a requisição no Postman:

Atualizado