示例#1
0
        public IActionResult LogoutSession([FromBody] LogoutSessionRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Result result = _sessionService.Logout(request, GetUserId());

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

            return(Ok(new EmptyResult()));
        }
示例#2
0
        public Core.Models.Result.Result Logout(LogoutSessionRequest request, string adminId)
        {
            ValidationResult validationResult = _logoutSessionValidator.Validate(request);

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

            BaseSpecification <SessionEntity> specification = new BaseSpecification <SessionEntity>();

            specification.AddFilter(x => x.Id == request.SessionId);
            specification.AddFilter(x => x.UserId == request.UserId);

            SessionEntity session = _sessionRepository.SingleOrDefault(specification);

            if (session == null)
            {
                _logger.LogError($"Sesion does not exist. SessionId {request.SessionId}, Admin {adminId}");
                return(Core.Models.Result.Result.Fail("no_session", "No Session"));
            }

            session.EndType = SessionEndTypes.AdminLogout;

            bool removeSessionResult = _sessionRepository.Remove(session);

            if (!removeSessionResult)
            {
                _logger.LogError($"Faild to remove session. SessionId {request.SessionId}, Admin {adminId}");
                return(Core.Models.Result.Result.Fail("error", "Error"));
            }

            _logger.LogInformation($"Sessions logout. UserId {request.SessionId}, Admin {adminId}");

            return(Core.Models.Result.Result.Ok());
        }