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

68 lines
2.3 KiB
C#
Raw Normal View History

2022-03-05 12:57:46 +00:00
using SecurityContext = ASC.Core.SecurityContext;
namespace ASC.People.Api;
2022-02-28 19:23:39 +00:00
2022-03-01 11:52:52 +00:00
public class NotificationController : ApiControllerBase
2022-02-28 19:23:39 +00:00
{
2022-03-05 12:57:46 +00:00
private readonly UserManager _userManager;
private readonly SecurityContext _securityContext;
private readonly AuthContext _authContext;
private readonly PermissionContext _permissionContext;
private readonly CommonLinkUtility _commonLinkUtility;
private readonly StudioNotifyService _studioNotifyService;
2022-02-28 19:23:39 +00:00
2022-03-05 12:57:46 +00:00
public NotificationController(
UserManager userManager,
SecurityContext securityContext,
AuthContext authContext,
PermissionContext permissionContext,
CommonLinkUtility commonLinkUtility,
StudioNotifyService studioNotifyService)
2022-02-28 19:23:39 +00:00
{
2022-03-05 12:57:46 +00:00
_userManager = userManager;
_securityContext = securityContext;
_authContext = authContext;
_permissionContext = permissionContext;
_commonLinkUtility = commonLinkUtility;
_studioNotifyService = studioNotifyService;
2022-02-28 19:23:39 +00:00
}
[Create("phone")]
public object SendNotificationToChangeFromBody([FromBody] UpdateMemberRequestDto model)
{
2022-03-05 12:57:46 +00:00
return SendNotificationToChange(model.UserId);
2022-02-28 19:23:39 +00:00
}
[Create("phone")]
[Consumes("application/x-www-form-urlencoded")]
public object SendNotificationToChangeFromForm([FromForm] UpdateMemberRequestDto model)
{
2022-03-05 12:57:46 +00:00
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;
2022-02-28 19:23:39 +00:00
}
2022-03-01 11:52:52 +00:00
}