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

72 lines
2.2 KiB
C#
Raw Normal View History

2022-02-28 19:23:39 +00:00
using SecurityContext = ASC.Core.SecurityContext;
namespace ASC.People.Api;
public class NotificationController : BaseApiController
{
private readonly CommonLinkUtility _commonLinkUtility;
public NotificationController(
UserManager userManager,
AuthContext authContext,
ApiContext apiContext,
PermissionContext permissionContext,
SecurityContext securityContext,
MessageService messageService,
MessageTarget messageTarget,
StudioNotifyService studioNotifyService,
CommonLinkUtility commonLinkUtility)
: base(
userManager,
authContext,
apiContext,
permissionContext,
securityContext,
messageService,
messageTarget,
studioNotifyService)
{
_commonLinkUtility = commonLinkUtility;
}
[Create("phone")]
public object SendNotificationToChangeFromBody([FromBody] UpdateMemberRequestDto model)
{
return SendNotificationToChange(model.UserId);
}
[Create("phone")]
[Consumes("application/x-www-form-urlencoded")]
public object SendNotificationToChangeFromForm([FromForm] UpdateMemberRequestDto model)
{
return SendNotificationToChange(model.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;
}
}