public async Task <IActionResult> Login([FromBody] UserRequest userRequest) { if (userRequest == null) { _logger.LogError("Login: userRequest object sent from client is null."); return(BadRequest("userRequest object is null")); } if (!ModelState.IsValid) { _logger.LogError("Login: Invalid userRequest object sent from client."); return(BadRequest("Invalid userRequest object")); } var user = await _userManager.FindByNameAsync(userRequest.UserName); if (user == null) { _logger.LogError("Login: User does not exist."); return(BadRequest("User does not exist")); } AppUsageLog appUsageLog; if (!await _userManager.CheckPasswordAsync(user, userRequest.Password)) { _logger.LogError("Login: Incorrect password."); appUsageLog = new AppUsageLog { Message = $"Failed login attempt for user {userRequest.UserName}", Tag = "IdentityController", UserId = 0, ReportedOn = DateTime.Now }; _coadaptService.AppUsageLog.CreateAppUsageLog(appUsageLog); await _coadaptService.SaveAsync(); return(BadRequest("Incorrect password")); } var roles = await _userManager.GetRolesAsync(user); var jwt = CreateJWT(user, roles); var userId = await _coadaptService.GetCoadaptUserIdByRole(user.Id, roles); appUsageLog = new AppUsageLog { Message = "User login", Tag = "IdentityController", UserId = userId, ReportedOn = DateTime.Now }; _coadaptService.AppUsageLog.CreateAppUsageLog(appUsageLog); await _coadaptService.UserAccessToken.UpsertRefreshTokenAsync(user.Id, jwt.RefreshToken); await _coadaptService.SaveAsync(); return(Ok(new LoginResponse { Id = user.Id, UserName = user.UserName, Roles = roles, Token = jwt.Token, Expires = jwt.Expires, RefreshToken = jwt.RefreshToken })); }
public async Task <IActionResult> CreateAppUsageLog([FromBody] AppUsageLogRequest appUsageLogRequest) { if (appUsageLogRequest == null) { await LogFailedAppUsageCreation(appUsageLogRequest); _logger.LogError("CreateAppUsageLog: AppUsageLogRequest object sent from client is null."); return(BadRequest("AppUsageLogRequest object is null")); } if (!ModelState.IsValid) { await LogFailedAppUsageCreation(appUsageLogRequest); _logger.LogError("CreateAppUsageLog: Invalid AppUsageLogRequest object sent from client."); return(BadRequest("Invalid AppUsageLogRequest object")); } var appUsageLog = new AppUsageLog() { Message = appUsageLogRequest.Message, Tag = appUsageLogRequest.Tag, UserId = appUsageLogRequest.UserId, ReportedOn = DateTime.Now }; _coadaptService.AppUsageLog.CreateAppUsageLog(appUsageLog); await _coadaptService.SaveAsync(); return(Ok(appUsageLog)); }
public static void Map(this AppUsageLog dbAppUsageLog, AppUsageLog appUsageLog) { dbAppUsageLog.ReportedOn = appUsageLog.ReportedOn; dbAppUsageLog.UserId = appUsageLog.UserId; dbAppUsageLog.Tag = appUsageLog.Tag; dbAppUsageLog.Message = appUsageLog.Message; }
private async Task LogFailedAppUsageCreation(AppUsageLogRequest appUsageLogRequest) { AppUsageLog appUsageLog = new AppUsageLog { Message = $"Failed app usage log creation", Tag = "AppUsageLogController-CreateAppUsageLog", UserId = appUsageLogRequest.UserId, ReportedOn = DateTime.Now }; _coadaptService.AppUsageLog.CreateAppUsageLog(appUsageLog); await _coadaptService.SaveAsync(); }