WebApi: sendsms, setphone

This commit is contained in:
pavelbannov 2021-06-16 20:46:24 +03:00
parent 01639a56cc
commit a8527e1a57
2 changed files with 60 additions and 7 deletions

View File

@ -188,12 +188,63 @@ namespace ASC.Web.Api.Controllers
return EmailValidationKeyModelHelper.Validate(model); 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) private AuthenticationTokenData AuthenticateMe(AuthModel auth)
{ {
var tenant = TenantManager.GetCurrentTenant().TenantId;
bool viaEmail; bool viaEmail;
var user = GetUser(tenant, auth, out viaEmail); var user = GetUser(auth, out viaEmail);
if (StudioSmsNotificationSettingsHelper.IsVisibleSettings() && StudioSmsNotificationSettingsHelper.Enable) if (StudioSmsNotificationSettingsHelper.IsVisibleSettings() && StudioSmsNotificationSettingsHelper.Enable)
{ {
@ -239,6 +290,7 @@ namespace ASC.Web.Api.Controllers
MessageService.Send(viaEmail ? MessageAction.LoginSuccessViaApi : MessageAction.LoginSuccessViaApiSocialAccount); MessageService.Send(viaEmail ? MessageAction.LoginSuccessViaApi : MessageAction.LoginSuccessViaApiSocialAccount);
var tenant = TenantManager.GetCurrentTenant().TenantId;
var expires = TenantCookieSettingsHelper.GetExpiresTime(tenant); var expires = TenantCookieSettingsHelper.GetExpiresTime(tenant);
return new AuthenticationTokenData return new AuthenticationTokenData
@ -261,7 +313,7 @@ namespace ASC.Web.Api.Controllers
private AuthenticationTokenData AuthenticateMeWithCode(AuthModel auth) private AuthenticationTokenData AuthenticateMeWithCode(AuthModel auth)
{ {
var tenant = TenantManager.GetCurrentTenant().TenantId; var tenant = TenantManager.GetCurrentTenant().TenantId;
var user = GetUser(tenant, auth, out _); var user = GetUser(auth, out _);
var sms = false; var sms = false;
try 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; viaEmail = true;
var action = MessageAction.LoginFailViaApi; var action = MessageAction.LoginFailViaApi;
@ -361,7 +413,7 @@ namespace ASC.Web.Api.Controllers
} }
user = UserManager.GetUsersByPasswordHash( user = UserManager.GetUsersByPasswordHash(
tenantId, TenantManager.GetCurrentTenant().TenantId,
memberModel.UserName, memberModel.UserName,
memberModel.PasswordHash); memberModel.PasswordHash);

View File

@ -9,5 +9,6 @@
public string AccessToken { get; set; } public string AccessToken { get; set; }
public string SerializedProfile { get; set; } public string SerializedProfile { get; set; }
public string Code { get; set; } public string Code { get; set; }
public string MobilePhone { get; set; }
} }
} }