You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
3.5 KiB

2 years ago
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.Account;
2 years ago
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;
2 years ago
protected readonly IdentityUserManager _userManager;
public SfsUserAppService(
IIdentityUserRepository userRepository,
IdentityUserManager userManager,
IProfileAppService profileAppService)
2 years ago
{
_userManager = userManager;
_profileAppService = profileAppService;
2 years ago
_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);
var ttt = user.PasswordHash;
var t=await _userManager.ResetPasswordAsync(user, input.CurrentPassword, input.NewPassword);
}
2 years ago
}