Beispiel #1
0
        public async Task <Core.Models.Result.Result> LogoutUser(LogoutUserSessionsRequest request, string adminId)
        {
            ValidationResult validationResult = _logoutUserSessionsValidator.Validate(request);

            if (!validationResult.IsValid)
            {
                _logger.LogWarning($"Invlid LogoutSessionRequest. Admin {adminId}");
                return(Core.Models.Result.Result.Fail(validationResult.Errors));
            }

            AppUserEntity appUser = await _userManager.FindByIdAsync(request.UserId);

            if (appUser == null)
            {
                _logger.LogWarning($"No user. UserId {request.UserId}, Admin {adminId}");
                return(Core.Models.Result.Result.Fail("no_user", "No user"));
            }

            SelectSpecification <SessionEntity, SessionEntity> specification = new SelectSpecification <SessionEntity, SessionEntity>();

            specification.AddFilter(x => x.UserId == request.UserId);
            specification.AddSelect(x => x);

            List <SessionEntity> sessions = _sessionRepository.GetList(specification);

            if (sessions.Count == 0)
            {
                return(Core.Models.Result.Result.Ok());
            }

            foreach (SessionEntity session in sessions)
            {
                session.EndType = SessionEndTypes.AdminLogout;
            }

            bool removeResult = await _sessionRepository.Remove(sessions);

            if (!removeResult)
            {
                _logger.LogWarning($"Faild to remove sessions. UserId {request.UserId}, Admin {adminId}");
                return(Core.Models.Result.Result.Fail("error", "Error"));
            }

            _logger.LogInformation($"User session logout. Admin {adminId}");

            return(Core.Models.Result.Result.Ok());
        }
Beispiel #2
0
        public async Task <IActionResult> LogoutUser([FromBody] LogoutUserSessionsRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Result result = await _sessionService.LogoutUser(request, GetUserId());

            if (result.Failure)
            {
                ModelState.AddErrors(result.Errors);
                return(BadRequest(ModelState));
            }

            return(Ok(new EmptyResult()));
        }