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
|
|
|
|
}
|