DocSpace-buildtools/products/ASC.People/Server/Api/NotificationController.cs

68 lines
2.3 KiB
C#

using SecurityContext = ASC.Core.SecurityContext;
namespace ASC.People.Api;
public class NotificationController : ApiControllerBase
{
private readonly UserManager _userManager;
private readonly SecurityContext _securityContext;
private readonly AuthContext _authContext;
private readonly PermissionContext _permissionContext;
private readonly CommonLinkUtility _commonLinkUtility;
private readonly StudioNotifyService _studioNotifyService;
public NotificationController(
UserManager userManager,
SecurityContext securityContext,
AuthContext authContext,
PermissionContext permissionContext,
CommonLinkUtility commonLinkUtility,
StudioNotifyService studioNotifyService)
{
_userManager = userManager;
_securityContext = securityContext;
_authContext = authContext;
_permissionContext = permissionContext;
_commonLinkUtility = commonLinkUtility;
_studioNotifyService = studioNotifyService;
}
[Create("phone")]
public object SendNotificationToChangeFromBody([FromBody] UpdateMemberRequestDto inDto)
{
return SendNotificationToChange(inDto.UserId);
}
[Create("phone")]
[Consumes("application/x-www-form-urlencoded")]
public object SendNotificationToChangeFromForm([FromForm] UpdateMemberRequestDto inDto)
{
return SendNotificationToChange(inDto.UserId);
}
private object SendNotificationToChange(string userId)
{
var user = _userManager.GetUsers(string.IsNullOrEmpty(userId)
? _securityContext.CurrentAccount.ID : new Guid(userId));
var canChange = user.IsMe(_authContext) || _permissionContext.CheckPermissions(new UserSecurityProvider(user.Id), Constants.Action_EditUser);
if (!canChange)
{
throw new SecurityAccessDeniedException(Resource.ErrorAccessDenied);
}
user.MobilePhoneActivationStatus = MobilePhoneActivationStatus.NotActivated;
_userManager.SaveUserInfo(user);
if (user.IsMe(_authContext))
{
return _commonLinkUtility.GetConfirmationUrl(user.Email, ConfirmType.PhoneActivation);
}
_studioNotifyService.SendMsgMobilePhoneChange(user);
return string.Empty;
}
}