Ejemplo n.º 1
0
        public async Task <IActionResult> Register(RegisterUserRequestDTO registerUserRequestDTO)
        {
            RegisterUserValidator validator = new RegisterUserValidator();
            var validationResult            = validator.Validate(registerUserRequestDTO);

            if (!validationResult.IsValid)
            {
                _logger.LogInformation("Not valid input.");
                ValidatorError validatorError = new ValidatorError();
                return(BadRequest(new {
                    message = validatorError.GetErrorMessagesAsString(validationResult.Errors)
                }));
            }

            var user = await _userRepo.CreateUser(registerUserRequestDTO.User, registerUserRequestDTO.Password);

            if (user == null)
            {
                return(BadRequest(new {
                    message = "User with given email already exists."
                }));
            }

            return(Ok(user));
        }
        public async Task <ActionResult <ReadUserDTO> > Register(RegisterUserRequestDTO model)
        {
            try
            {
                await _userService.Register(model, Request.Headers["origin"]);

                return(Ok(new { message = "Registration successful, please check your email for verification instructions" }));
            }
            catch (AppException ex)
            {
                return(BadRequest(new { message = ex.Message }));
            }
        }
Ejemplo n.º 3
0
        public async Task Register(RegisterUserRequestDTO model, string origin)
        {
            var user = _userData.GetByEmail(model.Email);

            if (user != null)
            {
                await SendAlreadyRegisteredEmail(user.Email, origin);

                return;
            }

            var userWithSameUsername = _userData.GetByUsername(model.Username);

            if (userWithSameUsername != null)
            {
                throw new AppException("Username already taken, please use different username.");
            }

            var newUser = _mapper.Map <User>(model);

            //first registered user is an admin
            bool isFirstAccount = _userData.GetCount() == 0;

            if (isFirstAccount)
            {
                newUser.Roles.Add(new Role {
                    RoleKey = RoleKey.admin
                });
            }
            else
            {
                newUser.Roles.Add(new Role {
                    RoleKey = RoleKey.superuser
                });
            }

            newUser.CreatedAt         = DateTime.UtcNow;
            newUser.VerificationToken = JwtToken.randomTokenString();

            newUser.Password = BC.HashPassword(model.Password);

            _userData.Add(newUser);

            await SendVerificationEmail(newUser, origin);
        }
Ejemplo n.º 4
0
    public async Task <IActionResult> Register([FromBody] RegisterUserRequestDTO request)
    {
        if (!ModelState.IsValid)
        {
            return(BadRequest(ModelState));
        }

        var user = new User {
            Email = request.Email, UserName = request.Email
        };
        var result = await _userManager.CreateAsync(user, request.Password);

        if (result.Succeeded)
        {
            return(Ok());
        }

        return(BadRequest(String.Join('\n', result.Errors.Select(item => item.Description))));
    }