public async Task <IActionResult> Login(UserForLoginDto userForLoginDto)
        {
            var user = await _authService.FindUserByEmail(userForLoginDto.Email);

            if (user != null)
            {
                var result = await _authService.SignInUser(user, userForLoginDto.Password);

                if (result.Succeeded)
                {
                    var appUser = await _authService.GetUser(userForLoginDto.Email);

                    var userToReturn = _mapper.Map <UserForDetailedDto>(appUser);

                    userToReturn = await _authService.AddRoleToUser(userToReturn, appUser);

                    _logger.LogInformation("Successful Login by Id: {0}, Email: {1}", user.Id, user.Email);

                    return(Ok(new
                    {
                        token = await _authService.GenerateJwtToken(appUser, _appSettings.Token),
                        user = userToReturn
                    }));
                }
            }

            _logger.LogWarning("Unsuccessful login by user: {0}", userForLoginDto.Email);
            return(BadRequest("Email or Password does not match"));
        }
Ejemplo n.º 2
0
        public async Task <bool> ChangeUserRole(string userId, string newRoleId)
        {
            var user = await _userRepo.GetById(userId);

            var newRole = await _roleRepo.GetById(newRoleId);

            var userRoles = await _authService.GetUserRoles(user);

            await _authService.RemoveRolesFromUser(user, userRoles);

            await _authService.AddRoleToUser(user, newRole.Name);

            await _unitOfWork.Save();

            return(true);
        }