public async Task <IActionResult> RemoveFromPatrol(RemoveUserDto dto)
        {
            if (User.RoleInPatrol(dto.PatrolId).CanMaintainUsers())
            {
                await _patrolRepository.DeletePatrolUser(dto.PatrolId, dto.UserId);

                //TODO, if the user asn't current user, mark their tokens to supersede
                //refresh the users jwt to match the above change
                if (dto.UserId == User.UserId())
                {
                    Response.SendNewToken(await _authenticationService.IssueJwtToUser(User.UserId(), User.TokenGuid()));
                }
                else
                {
                    //supersede any tokens for the user
                    var patrolUsers = (await _patrolRepository.GetUsersForPatrol(dto.PatrolId)).ToList();
                    patrolUsers = patrolUsers.Where(x => x.Id != User.UserId()).ToList();
                    await _tokenRepository.SupersedeActiveTokensForUsers(patrolUsers.Select(x => x.Id).ToList(), _systemClock.UtcNow.UtcDateTime);
                }

                return(Ok());
            }
            else
            {
                return(Forbid());
            }
        }
Beispiel #2
0
        public async Task <ActionResult> RemoveDepartment([FromBody] RemoveUserDto userDto)
        {
            if (!IsAvailableOperation())
            {
                return(BadRequest());
            }

            await _userService.Remove(userDto);

            AddLog(Enums.LogType.Create, LogMessage.CreateSuccessByIdMessage(LogMessage.UserEntityName, userDto.Id, LogMessage.RemoveAction, UserId));
            return(Ok());
        }
Beispiel #3
0
 /// <summary>
 /// 删除用户
 /// </summary>
 /// <param name="deleteUserDto">删除用户信息</param>
 /// <returns>返回用户删除结果</returns>
 public Result RemoveUser(RemoveUserDto deleteUserDto)
 {
     if (deleteUserDto?.Ids.IsNullOrEmpty() ?? true)
     {
         return(Result.FailedResult("没有指定任何要删除的用户信息"));
     }
     using (var businessWork = WorkManager.Create())
     {
         var deleteResult = userService.Remove(deleteUserDto.Ids);
         if (!deleteResult.Success)
         {
             return(deleteResult);
         }
         var commitResult = businessWork.Commit();
         return(commitResult.ExecutedSuccess ? Result.SuccessResult("删除成功") : Result.FailedResult("删除失败"));
     }
 }
Beispiel #4
0
        public async Task Remove(RemoveUserDto userDto)
        {
            var user = await _userManager.Users.FirstOrDefaultAsync(x => x.Id == userDto.Id && x.IsActive);

            if (user == null)
            {
                throw new NotFoundException("User", userDto.Id);
            }

            var fileStorageRepository = DataContextManager.CreateRepository <IFileStorageRepository>();

            var fileStorages = await fileStorageRepository.GetByUserId(user.Id);

            using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                user.IsActive = false;
                var result = await _userManager.UpdateAsync(user);

                if (!result.Succeeded)
                {
                    scope.Dispose();
                    throw new UserManagerException("remove", user.Email);
                }

                scope.Complete();
            }

            fileStorages.SelectMany(s => s.Permissions)
            .Where(x => !x.EndDate.HasValue)
            .ToList()
            .ForEach(perm =>
            {
                perm.EndDate = DateTime.UtcNow;
            });

            await fileStorageRepository.Update(fileStorages);
        }
Beispiel #5
0
 /// <summary>
 /// 删除用户
 /// </summary>
 /// <param name="removeUserDto">删除信息</param>
 /// <returns>返回执行结果</returns>
 public Result RemoveUser(RemoveUserDto removeUserDto)
 {
     return(userBusiness.RemoveUser(removeUserDto));
 }