public async Task <IActionResult> Login([FromForm] UserCreationVM vm)
        {
            if (!ModelState.IsValid)
            {
                TempData["error"] = "Invalid input for creation";
                _logger.LogInformation("Invalid input for creation");

                return(Redirect("/accounts/login"));
            }

            AppUser user = await _userManager.FindByNameAsync(vm.Nickname);

            if (user == null)
            {
                TempData["error"] = "Nickname or password invalid";
                _logger.LogInformation("Nickname not found");

                return(Redirect("/accounts/login"));
            }

            bool match = await _signInManager.UserManager.CheckPasswordAsync(user, vm.Password);

            if (!match)
            {
                TempData["error"] = "Nickname or password invalid";
                _logger.LogInformation("Password no match");

                return(Redirect("/accounts/login"));
            }

            await _signInManager.SignInAsync(user, isPersistent : false);

            return(Redirect("/users/dashboard"));
        }
        public async Task <IActionResult> Register([FromForm] UserCreationVM vm)
        {
            if (!ModelState.IsValid)
            {
                TempData["error"] = "Invalid input for creation";
                _logger.LogInformation("Invalid input for creation");

                return(Redirect("/accounts/register"));
            }

            if (vm.Password != vm.ConfirmPassword)
            {
                TempData["error"] = "Password dont match";
                _logger.LogInformation("Passwords input dont match");

                return(Redirect("/accounts/register"));
            }

            AppUser user = new AppUser {
                Nickname = vm.Nickname,
                UserName = vm.Nickname
            };

            var result = await _userManager.CreateAsync(user, vm.Password);

            if (!result.Succeeded)
            {
                TempData["error"] = "An error ocurred, try again";
                _logger.LogError("Error while registering an user");

                return(Redirect("/accounts/register"));
            }

            return(Redirect("/accounts/login"));
        }
Example #3
0
        /// <summary>
        /// Creates a new user.
        /// </summary>
        public async Task <UserVM> CreateAsync(UserCreationVM vm)
        {
            await ValidateAsync(vm.UserInfo);
            await ValidateAsync(vm.PasswordInfo);

            var user = _mapper.Map <AppUser>(vm.UserInfo);

            user.Id = Guid.NewGuid().ToString();
            var result = await _userMgr.CreateAsync(user, vm.PasswordInfo.Password);

            if (!result.Succeeded)
            {
                throw new OperationException(result.Errors.First().Description);
            }

            return(_mapper.Map <UserVM>(user));
        }
Example #4
0
        public async Task <UserVM> CreateUserAsync(UserCreationVM userCreation)
        {
            bool isUsernameUnique = await _userRepository.IsUsernameUniqueAsync(userCreation.Username);

            if (!isUsernameUnique)
            {
                return(null);
            }

            var dbUser = _mapper.Map <User>(userCreation);

            bool userAdded = await _userRepository.AddAsync(dbUser);

            if (userAdded)
            {
                return(_mapper.Map <UserVM>(dbUser));
            }

            return(null);
        }
Example #5
0
        public async Task <IActionResult> Register([FromBody] UserCreationVM model)
        {
            if (model == null || !ModelState.IsValid)
            {
                return(BadRequest("Invalid user creation data."));
            }

            model.Password = _securityService.EncryptPassword(model.Password);

            var user = await _userService.CreateUserAsync(model);

            if (user == null)
            {
                return(BadRequest("Username is not unique."));
            }

            var authToken = _securityService.GenerateAuthToken(user);

            var loggedInUser = new LoggedInUserVM(user, authToken);

            return(Ok(loggedInUser));
        }
Example #6
0
 public Task <UserVM> Create([FromBody] UserCreationVM vm)
 {
     return(_userMgr.CreateAsync(vm));
 }