|
|
|
using System;
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
using IdentityModel;
|
|
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
|
using Microsoft.AspNetCore.Identity;
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
using Volo.Abp;
|
|
|
|
using Volo.Abp.Account;
|
|
|
|
using Volo.Abp.Application.Services;
|
|
|
|
using Volo.Abp.Identity;
|
|
|
|
using Win_in.Sfs.Auth.Domain;
|
|
|
|
using Win_in.Sfs.Auth.Users.Inputs;
|
|
|
|
using IdentityUser = Volo.Abp.Identity.IdentityUser;
|
|
|
|
|
|
|
|
namespace Win_in.Sfs.Auth.Users;
|
|
|
|
|
|
|
|
[Route("/api/identity/users")]
|
|
|
|
public class SfsUserAppService : ApplicationService, ISfsUserAppService
|
|
|
|
{
|
|
|
|
private readonly IIdentityUserRepository _userRepository;
|
|
|
|
private readonly IProfileAppService _profileAppService;
|
|
|
|
protected readonly IdentityUserManager _userManager;
|
|
|
|
public SfsUserAppService(
|
|
|
|
IIdentityUserRepository userRepository,
|
|
|
|
IdentityUserManager userManager,
|
|
|
|
IProfileAppService profileAppService)
|
|
|
|
{
|
|
|
|
_userManager = userManager;
|
|
|
|
_profileAppService = profileAppService;
|
|
|
|
_userRepository = userRepository;
|
|
|
|
}
|
|
|
|
|
|
|
|
[Authorize("AbpIdentity.Users")]
|
|
|
|
[HttpPost("{id}/department-code")]
|
|
|
|
|
|
|
|
public virtual async Task<IdentityUserDto> UpdateDepartmentCodeAsync(Guid id, string departmentCode)
|
|
|
|
{
|
|
|
|
var user = await _userRepository.GetAsync(id).ConfigureAwait(false);
|
|
|
|
Check.NotNull(user, nameof(IdentityUser));
|
|
|
|
user.SetDepartmentCode(departmentCode);
|
|
|
|
var result = await _userRepository.UpdateAsync(user).ConfigureAwait(false);
|
|
|
|
var dto = ObjectMapper.Map<IdentityUser, IdentityUserDto>(result);
|
|
|
|
return dto;
|
|
|
|
}
|
|
|
|
|
|
|
|
[Authorize("AbpIdentity.Users")]
|
|
|
|
[HttpPost("{id}/is-active")]
|
|
|
|
public virtual async Task<IdentityUserDto> UpdateIsActiveAsync(Guid id, bool isActive)
|
|
|
|
{
|
|
|
|
var user = await _userRepository.GetAsync(id).ConfigureAwait(false);
|
|
|
|
Check.NotNull(user, nameof(IdentityUser));
|
|
|
|
user.SetIsActive(isActive);
|
|
|
|
var result = await _userRepository.UpdateAsync(user).ConfigureAwait(false);
|
|
|
|
var dto = ObjectMapper.Map<IdentityUser, IdentityUserDto>(result);
|
|
|
|
return dto;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
[AllowAnonymous]
|
|
|
|
[HttpPost("updatebyname")]
|
|
|
|
public virtual async Task<IdentityUserDto> UpdateByNmaeAsync(IdentityUserInputDto entity)
|
|
|
|
{
|
|
|
|
_ = new IdentityUserDto();
|
|
|
|
|
|
|
|
var user = await _userRepository.FindByNormalizedUserNameAsync(entity.UserName.ToUpper()).ConfigureAwait(false);
|
|
|
|
IdentityUserDto userresult;
|
|
|
|
if (user == null)
|
|
|
|
{
|
|
|
|
var inputuser = ObjectMapper.Map<IdentityUserInputDto, IdentityUser>(entity);
|
|
|
|
await _userManager.CreateAsync(inputuser, "123456", false).ConfigureAwait(false);
|
|
|
|
userresult = ObjectMapper.Map<IdentityUser, IdentityUserDto>(inputuser);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
user.Name = entity.Name;
|
|
|
|
user.SetDepartmentCode(entity.DepartmentCode);
|
|
|
|
user.SetIsActive(entity.IsActive);
|
|
|
|
user.LastModificationTime = DateTime.Now;
|
|
|
|
await _userManager.UpdateAsync(user).ConfigureAwait(false);
|
|
|
|
userresult = ObjectMapper.Map<IdentityUser, IdentityUserDto>(user);
|
|
|
|
}
|
|
|
|
return userresult;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 修改密码
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="userId"></param>
|
|
|
|
/// <param name="input"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
[HttpPost("change-password/{userId}")]
|
|
|
|
public virtual async Task ChangePasswordAsync(Guid userId, ChangePasswordInput input)
|
|
|
|
{
|
|
|
|
var user = await _userManager.GetByIdAsync(userId).ConfigureAwait(false);
|
|
|
|
_userManager.PasswordValidators.Clear();
|
|
|
|
var t=await _userManager.ChangePasswordAsync(user, input.CurrentPassword, input.NewPassword);
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 重置密码
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="userId"></param>
|
|
|
|
/// <param name="input"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
[HttpPost("reset-password/{userId}")]
|
|
|
|
[AllowAnonymous]
|
|
|
|
public virtual async Task ReSetPasswordAsync(Guid userId)
|
|
|
|
{
|
|
|
|
var user =await _userManager.GetByIdAsync(userId).ConfigureAwait(false);
|
|
|
|
await _userManager.RemovePasswordAsync(user);
|
|
|
|
_userManager.PasswordValidators.Clear();
|
|
|
|
await _userManager.AddPasswordAsync(user, "000000");
|
|
|
|
}
|
|
|
|
}
|