コード例 #1
0
        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
            }));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
 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;
 }
コード例 #4
0
        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();
        }