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")); }
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); }