diff --git a/web/ASC.Web.Api/Controllers/AuthenticationController.cs b/web/ASC.Web.Api/Controllers/AuthenticationController.cs index 3d5c22ea1a..0a401755e5 100644 --- a/web/ASC.Web.Api/Controllers/AuthenticationController.cs +++ b/web/ASC.Web.Api/Controllers/AuthenticationController.cs @@ -188,12 +188,63 @@ namespace ASC.Web.Api.Controllers return EmailValidationKeyModelHelper.Validate(model); } + [Create("setphone", false)] + public AuthenticationTokenData SaveMobilePhoneFromBody([FromBody]AuthModel model) + { + return SaveMobilePhone(model); + } + + [Create("setphone", false)] + [Consumes("application/x-www-form-urlencoded")] + public AuthenticationTokenData SaveMobilePhoneFromForm([FromForm]AuthModel model) + { + return SaveMobilePhone(model); + } + + private AuthenticationTokenData SaveMobilePhone(AuthModel model) + { + var user = GetUser(model, out _); + model.MobilePhone = SmsManager.SaveMobilePhone(user, model.MobilePhone); + MessageService.Send(MessageAction.UserUpdatedMobileNumber, MessageTarget.Create(user.ID), user.DisplayUserName(false, DisplayUserSettingsHelper), model.MobilePhone); + + return new AuthenticationTokenData + { + Sms = true, + PhoneNoise = SmsSender.BuildPhoneNoise(model.MobilePhone), + Expires = new ApiDateTime(TenantManager, TimeZoneConverter, DateTime.UtcNow.Add(SmsKeyStorage.StoreInterval)) + }; + } + + [Create(@"sendsms", false)] + public AuthenticationTokenData SendSmsCodeFromBody([FromBody]AuthModel model) + { + return SendSmsCode(model); + } + + [Create(@"sendsms", false)] + [Consumes("application/x-www-form-urlencoded")] + public AuthenticationTokenData SendSmsCodeFromForm([FromForm]AuthModel model) + { + return SendSmsCode(model); + } + + private AuthenticationTokenData SendSmsCode(AuthModel model) + { + var user = GetUser(model, out _); + SmsManager.PutAuthCode(user, true); + + return new AuthenticationTokenData + { + Sms = true, + PhoneNoise = SmsSender.BuildPhoneNoise(user.MobilePhone), + Expires = new ApiDateTime(TenantManager, TimeZoneConverter, DateTime.UtcNow.Add(SmsKeyStorage.StoreInterval)) + }; + } + private AuthenticationTokenData AuthenticateMe(AuthModel auth) { - var tenant = TenantManager.GetCurrentTenant().TenantId; - bool viaEmail; - var user = GetUser(tenant, auth, out viaEmail); + var user = GetUser(auth, out viaEmail); if (StudioSmsNotificationSettingsHelper.IsVisibleSettings() && StudioSmsNotificationSettingsHelper.Enable) { @@ -238,7 +289,8 @@ namespace ASC.Web.Api.Controllers CookiesManager.SetCookies(CookiesType.AuthKey, token); MessageService.Send(viaEmail ? MessageAction.LoginSuccessViaApi : MessageAction.LoginSuccessViaApiSocialAccount); - + + var tenant = TenantManager.GetCurrentTenant().TenantId; var expires = TenantCookieSettingsHelper.GetExpiresTime(tenant); return new AuthenticationTokenData @@ -261,7 +313,7 @@ namespace ASC.Web.Api.Controllers private AuthenticationTokenData AuthenticateMeWithCode(AuthModel auth) { var tenant = TenantManager.GetCurrentTenant().TenantId; - var user = GetUser(tenant, auth, out _); + var user = GetUser(auth, out _); var sms = false; try @@ -321,7 +373,7 @@ namespace ASC.Web.Api.Controllers } } - private UserInfo GetUser(int tenantId, AuthModel memberModel, out bool viaEmail) + private UserInfo GetUser(AuthModel memberModel, out bool viaEmail) { viaEmail = true; var action = MessageAction.LoginFailViaApi; @@ -361,7 +413,7 @@ namespace ASC.Web.Api.Controllers } user = UserManager.GetUsersByPasswordHash( - tenantId, + TenantManager.GetCurrentTenant().TenantId, memberModel.UserName, memberModel.PasswordHash); diff --git a/web/ASC.Web.Api/Models/AuthModel.cs b/web/ASC.Web.Api/Models/AuthModel.cs index 33b3a62c88..838887ab6d 100644 --- a/web/ASC.Web.Api/Models/AuthModel.cs +++ b/web/ASC.Web.Api/Models/AuthModel.cs @@ -9,5 +9,6 @@ public string AccessToken { get; set; } public string SerializedProfile { get; set; } public string Code { get; set; } + public string MobilePhone { get; set; } } }