Skip to content

Commit f6b8173

Browse files
authored
refactor: Choose between user registration phone number and email address (#1270)
1 parent eb3b664 commit f6b8173

File tree

12 files changed

+35
-23
lines changed

12 files changed

+35
-23
lines changed

src/Contracts/Masa.Auth.Contracts.Admin/Sso/RegisterFieldDto.cs

-6
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,12 @@ public class RegisterFieldDto
1111

1212
public bool Required { get; set; }
1313

14-
public bool CannotUpdate { get; private set; }
15-
1614
[JsonConstructor]
1715
public RegisterFieldDto(RegisterFieldTypes registerFieldType, int sort, bool required)
1816
{
1917
RegisterFieldType = registerFieldType;
2018
Sort = sort;
2119
Required = required;
22-
if (RegisterFieldType is RegisterFieldTypes.PhoneNumber)
23-
{
24-
CannotUpdate = true;
25-
}
2620
}
2721
}
2822

src/Services/Masa.Auth.Service.Admin/Application/Subjects/CommandHandler.cs

+8-4
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,15 @@ async Task RegisterVerifyAsync(RegisterByEmailModel model)
9393
throw new UserFriendlyException(errorCode: UserFriendlyExceptionCodes.INVALID_EMAIL_CAPTCHA);
9494
}
9595
}
96-
var smsCodeKey = CacheKey.MsgCodeRegisterAndLoginKey(model.PhoneNumber);
97-
var smsCode = await _distributedCacheClient.GetAsync<string>(smsCodeKey);
98-
if (!model.SmsCode.Equals(smsCode))
96+
97+
if (model.UserRegisterType == UserRegisterTypes.PhoneNumber || !string.IsNullOrEmpty(model.PhoneNumber))
9998
{
100-
throw new UserFriendlyException(errorCode: UserFriendlyExceptionCodes.INVALID_SMS_CAPTCHA);
99+
var smsCodeKey = CacheKey.MsgCodeRegisterAndLoginKey(model.PhoneNumber);
100+
var smsCode = await _distributedCacheClient.GetAsync<string>(smsCodeKey);
101+
if (!model.SmsCode.Equals(smsCode))
102+
{
103+
throw new UserFriendlyException(errorCode: UserFriendlyExceptionCodes.INVALID_SMS_CAPTCHA);
104+
}
101105
}
102106
}
103107

src/Services/Masa.Auth.Service.Admin/Properties/launchSettings.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
"MASA_NAMESPACE": "masastack",
2323
"MASA_CLUSTER": "Default",
2424
"OTLP_URL": "https://otel-collector.masastack:9013",
25-
"REDIS": "{\"RedisHost\": \"10.130.0.235\", \"RedisPort\": 24615, \"RedisDb\": 0,\"RedisPassword\": \"Hzss@123\"}",
26-
"CONNECTIONSTRING": "{\"Server\": \"10.130.0.235\", \"Port\": 24878,\"Database\":\"pm-dev\",\"UserId\": \"ss\",\"Password\":\"Hzss@123\"}",
25+
"REDIS": "{\"RedisHost\": \"10.130.0.19\", \"RedisPort\": 2135, \"RedisDb\": 3,\"RedisPassword\": \"Hzss@123\"}",
26+
"CONNECTIONSTRING": "{\"Server\": \"10.130.0.19\", \"Port\": 2415,\"Database\":\"pm-dev\",\"UserId\": \"ss\",\"Password\":\"Hzss@123\"}",
2727
"MASA_STACK": "[{\"id\":\"pm\",\"service\":{\"id\":\"pm-service-dev\",\"domain\":\"http://pm-service-dev.masastack.com\"},\"web\":{\"id\":\"pm-web-dev\",\"domain\":\"https://pm-dev.masastack.com\"}},{\"id\":\"dcc\",\"service\":{\"id\":\"dcc-service-dev\",\"domain\":\"http://dcc-service-dev.masastack.com\"},\"web\":{\"id\":\"dcc-web-dev\",\"domain\":\"https://dcc-dev.masastack.com\"}},{\"id\":\"tsc\",\"service\":{\"id\":\"tsc-service-dev\",\"domain\":\"http://tsc-service-dev.masastack.com\"},\"web\":{\"id\":\"tsc-web-dev\",\"domain\":\"https://tsc-dev.masastack.com\"}},{\"id\":\"alert\",\"service\":{\"id\":\"alert-service-dev\",\"domain\":\"http://alert-service-dev.masastack.com\"},\"web\":{\"id\":\"alert-web-dev\",\"domain\":\"https://alert-dev.masastack.com\"}},{\"id\":\"scheduler\",\"service\":{\"id\":\"scheduler-service-dev\",\"domain\":\"http://scheduler-service-dev.masastack.com\"},\"worker\":{\"id\":\"scheduler-worker-dev\",\"domain\":\"http://scheduler-worker-dev.masastack.com\"},\"web\":{\"id\":\"scheduler-web-dev\",\"domain\":\"https://scheduler-dev.masastack.com\"}},{\"id\":\"mc\",\"service\":{\"id\":\"mc-service-dev\",\"domain\":\"http://mc-service-dev.masastack.com\"},\"web\":{\"id\":\"mc-web-dev\",\"domain\":\"https://mc-dev.masastack.com\"}},{\"id\":\"auth\",\"service\":{\"id\":\"auth-service-dev\",\"domain\":\"http://auth-service-dev.masastack.com\"},\"web\":{\"id\":\"auth-web-dev\",\"domain\":\"https://auth-dev.masastack.com\"},\"sso\":{\"id\":\"auth-sso-dev\",\"domain\":\"https://auth-sso-dev.masastack.com\"}}]",
2828
"ELASTIC": "{\"Nodes\": [\"http://es-ydy-new.lonsid.cn:9200\"],\"Index\": \"auth_user_development\"}",
2929
"MASA_ENVIRONMENT": "Development",

src/Services/Masa.Auth.Service.Admin/appsettings.Development.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
}
88
},
99
"ConnectionStrings": {
10-
"DefaultConnection": "Server=10.130.0.235,24878;Database=auth_dev;User Id=ss;Password=Hzss@123;"
10+
"DefaultConnection": "Server=10.130.0.19,2415;Database=auth_dev;User Id=ss;Password=Hzss@123;"
1111
}
1212
}

src/Web/Masa.Auth.Web.Admin.Rcl/Pages/Sso/CustomLoginRegister/AddCustomLoginRegisterDialog.razor.cs

+6
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ public async Task AddCustomLoginAsync(FormContext context)
8585
OpenErrorMessage(T("Register configuration items are required"));
8686
return;
8787
}
88+
if (!CustomLogin.RegisterFields.Any(r => (r.RegisterFieldType == RegisterFieldTypes.PhoneNumber || r.RegisterFieldType == RegisterFieldTypes.Email) && r.Required))
89+
{
90+
Tab = CustomLoginTab.Register;
91+
OpenErrorMessage(T("PhoneNumberAndEmailEmptyError"));
92+
return;
93+
}
8894

8995
await CustomLoginService.AddAsync(CustomLogin);
9096
OpenSuccessMessage(T("Add Custom Login success"));

src/Web/Masa.Auth.Web.Admin.Rcl/Pages/Sso/CustomLoginRegister/ConfigRegister.razor

+3-3
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@
2626
{
2727
<MRow Class="mb-6" @key="@(registerField.RegisterFieldType!=default?registerField.RegisterFieldType:registerField.Sort)">
2828
<MCol Cols="6">
29-
<RegisterFieldSelect @bind-Value="registerField.RegisterFieldType" Disabled="registerField.CannotUpdate" Excludes="Value.Select(v => v.RegisterFieldType).ToList()" />
29+
<RegisterFieldSelect @bind-Value="registerField.RegisterFieldType" Excludes="Value.Select(v => v.RegisterFieldType).ToList()" />
3030
</MCol>
3131
<MCol Cols="2" Class="d-flex">
32-
<MSwitch @bind-Value="registerField.Required" Disabled="registerField.CannotUpdate" Class="my-auto my-0 pt-0" TValue="bool"/>
32+
<MSwitch @bind-Value="registerField.Required" Class="my-auto my-0 pt-0" TValue="bool"/>
3333
</MCol>
3434
<MCol Class="d-flex">
3535
<div class="my-auto">
@@ -39,7 +39,7 @@
3939
<MButton Class="mr-6" Icon OnClick="async () =>await Down(registerField)" Disabled="registerField.Sort == Value.Max(v => v.Sort)">
4040
<SIcon Tooltip="@T("Down")">mdi-menu-down</SIcon>
4141
</MButton>
42-
<MButton Class="mr-6" Icon OnClick="async () =>await Remove(registerField)" Disabled="registerField.CannotUpdate">
42+
<MButton Class="mr-6" Icon OnClick="async () =>await Remove(registerField)">
4343
<SIcon Tooltip="@T("Delete")">mdi-delete-outline</SIcon>
4444
</MButton>
4545
</div>

src/Web/Masa.Auth.Web.Admin.Rcl/Pages/Sso/CustomLoginRegister/UpdateCustomLoginRegisterDialog.razor.cs

+6
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,12 @@ public async Task UpdateCustomLoginAsync(FormContext context)
8080
OpenErrorMessage(T("Register configuration items are required"));
8181
return;
8282
}
83+
if (!CustomLogin.RegisterFields.Any(r => (r.RegisterFieldType == RegisterFieldTypes.PhoneNumber || r.RegisterFieldType == RegisterFieldTypes.Email) && r.Required))
84+
{
85+
Tab = CustomLoginTab.Register;
86+
OpenErrorMessage(T("PhoneNumberAndEmailEmptyError"));
87+
return;
88+
}
8389

8490
await CustomLoginService.UpdateAsync(CustomLogin);
8591
OpenSuccessMessage(T("Edit Custom Login data success"));

src/Web/Masa.Auth.Web.Admin.Rcl/wwwroot/i18n/en-US.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@
4545
"CustomLoginBlock": {
4646
"TitleName": "Name",
4747
"NameRequired": "Name is required",
48-
"DisplayNameRequired": "DisplayName is required"
48+
"DisplayNameRequired": "DisplayName is required",
49+
"PhoneNumberAndEmailEmptyError": "One of phone number and email must have a value"
4950
},
5051
"ConfirmChangePassword": "I confirm to change the password",
5152
"PasswordValidateFailed": "Password validate failed",

src/Web/Masa.Auth.Web.Admin.Rcl/wwwroot/i18n/zh-CN.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,8 @@
518518
"Name is required": "姓名必须填写",
519519
"Title is required": "标题必须填写",
520520
"NameRequired": "姓名必须填写",
521-
"DisplayNameRequired": "昵称必须填写"
521+
"DisplayNameRequired": "昵称必须填写",
522+
"PhoneNumberAndEmailEmptyError": "电话号码和邮件其中一个必须有值"
522523
},
523524

524525
"OperationLog": "操作日志",

src/Web/Masa.Auth.Web.Admin.Server/Properties/launchSettings.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
"TLS_NAME": "",
2323
"MASA_CLUSTER": "Default",
2424
"OTLP_URL": "https://otel-collector.masastack:9013",
25-
"REDIS": "{\"RedisHost\": \"10.130.0.235\", \"RedisPort\": 24615, \"RedisDb\": 0,\"RedisPassword\": \"Hzss@123\"}",
26-
"CONNECTIONSTRING": "{\"Server\": \"10.130.0.235\", \"Port\": 24878,\"Database\":\"pm-dev\",\"UserId\": \"ss\",\"Password\":\"Hzss@123\"}",
25+
"REDIS": "{\"RedisHost\": \"10.130.0.19\", \"RedisPort\": 2135, \"RedisDb\": 3,\"RedisPassword\": \"Hzss@123\"}",
26+
"CONNECTIONSTRING": "{\"Server\": \"10.130.0.19\", \"Port\": 2415,\"Database\":\"pm-dev\",\"UserId\": \"ss\",\"Password\":\"Hzss@123\"}",
2727
"MASA_STACK": "[{\"id\":\"pm\",\"service\":{\"id\":\"pm-service-dev\",\"domain\":\"http://pm-service-dev.masastack.com\"},\"web\":{\"id\":\"pm-web-dev\",\"domain\":\"https://pm-dev.masastack.com\"}},{\"id\":\"dcc\",\"service\":{\"id\":\"dcc-service-dev\",\"domain\":\"http://dcc-service-dev.masastack.com\"},\"web\":{\"id\":\"dcc-web-dev\",\"domain\":\"https://dcc-dev.masastack.com\"}},{\"id\":\"tsc\",\"service\":{\"id\":\"tsc-service-dev\",\"domain\":\"http://tsc-service-dev.masastack.com\"},\"web\":{\"id\":\"tsc-web-dev\",\"domain\":\"https://tsc-dev.masastack.com\"}},{\"id\":\"alert\",\"service\":{\"id\":\"alert-service-dev\",\"domain\":\"http://alert-service-dev.masastack.com\"},\"web\":{\"id\":\"alert-web-dev\",\"domain\":\"https://alert-dev.masastack.com\"}},{\"id\":\"scheduler\",\"service\":{\"id\":\"scheduler-service-dev\",\"domain\":\"http://scheduler-service-dev.masastack.com\"},\"worker\":{\"id\":\"scheduler-worker-dev\",\"domain\":\"http://scheduler-worker-dev.masastack.com\"},\"web\":{\"id\":\"scheduler-web-dev\",\"domain\":\"https://scheduler-dev.masastack.com\"}},{\"id\":\"mc\",\"service\":{\"id\":\"mc-service-dev\",\"domain\":\"http://mc-service-dev.masastack.com\"},\"web\":{\"id\":\"mc-web-dev\",\"domain\":\"https://mc-dev.masastack.com\"}},{\"id\":\"auth\",\"service\":{\"id\":\"auth-service-dev\",\"domain\":\"http://auth-service-dev.masastack.com\"},\"web\":{\"id\":\"auth-web-dev\",\"domain\":\"https://auth-dev.masastack.com\"},\"sso\":{\"id\":\"auth-sso-dev\",\"domain\":\"https://auth-sso-dev.masastack.com\"}}]",
2828
"ELASTIC": "{\"Nodes\": [\"http://es-ydy-new.lonsid.cn:9200\"],\"Index\": \"auth_user_development\"}",
2929
"MASA_ENVIRONMENT": "Development",

src/Web/Masa.Auth.Web.Sso/Pages/Account/Login/RegisterSection.razor.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ await AuthClient.UserService.RegisterByPhoneAsync(new RegisterByPhoneModel
131131

132132
var loginInputModel = new LoginInputModel
133133
{
134-
PhoneLogin = true,
134+
PhoneLogin = RegisterFields.Any(x => x.RegisterFieldType == RegisterFieldTypes.PhoneNumber),
135135
SmsCode = _inputModel.SmsCode,
136136
Password = _inputModel.Password,
137137
Account = _inputModel.Email ?? "",

src/Web/Masa.Auth.Web.Sso/Properties/launchSettings.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
"MASA_NAMESPACE": "masastack",
2424
"MASA_CLUSTER": "Default",
2525
"OTLP_URL": "https://otel-collector.masastack:9013",
26-
"REDIS": "{\"RedisHost\": \"10.130.0.235\", \"RedisPort\": 24615, \"RedisDb\": 0,\"RedisPassword\": \"Hzss@123\"}",
27-
"CONNECTIONSTRING": "{\"Server\": \"10.130.0.235\", \"Port\": 24878,\"Database\":\"pm-dev\",\"UserId\": \"ss\",\"Password\":\"Hzss@123\"}",
26+
"REDIS": "{\"RedisHost\": \"10.130.0.19\", \"RedisPort\": 2135, \"RedisDb\": 3,\"RedisPassword\": \"Hzss@123\"}",
27+
"CONNECTIONSTRING": "{\"Server\": \"10.130.0.19\", \"Port\": 2415,\"Database\":\"pm-dev\",\"UserId\": \"ss\",\"Password\":\"Hzss@123\"}",
2828
"MASA_STACK": "[{\"id\":\"pm\",\"service\":{\"id\":\"pm-service-dev\",\"domain\":\"http://pm-service-dev.masastack.com\"},\"web\":{\"id\":\"pm-web-dev\",\"domain\":\"https://pm-dev.masastack.com\"}},{\"id\":\"dcc\",\"service\":{\"id\":\"dcc-service-dev\",\"domain\":\"http://dcc-service-dev.masastack.com\"},\"web\":{\"id\":\"dcc-web-dev\",\"domain\":\"https://dcc-dev.masastack.com\"}},{\"id\":\"tsc\",\"service\":{\"id\":\"tsc-service-dev\",\"domain\":\"http://tsc-service-dev.masastack.com\"},\"web\":{\"id\":\"tsc-web-dev\",\"domain\":\"https://tsc-dev.masastack.com\"}},{\"id\":\"alert\",\"service\":{\"id\":\"alert-service-dev\",\"domain\":\"http://alert-service-dev.masastack.com\"},\"web\":{\"id\":\"alert-web-dev\",\"domain\":\"https://alert-dev.masastack.com\"}},{\"id\":\"scheduler\",\"service\":{\"id\":\"scheduler-service-dev\",\"domain\":\"http://scheduler-service-dev.masastack.com\"},\"worker\":{\"id\":\"scheduler-worker-dev\",\"domain\":\"http://scheduler-worker-dev.masastack.com\"},\"web\":{\"id\":\"scheduler-web-dev\",\"domain\":\"https://scheduler-dev.masastack.com\"}},{\"id\":\"mc\",\"service\":{\"id\":\"mc-service-dev\",\"domain\":\"http://mc-service-dev.masastack.com\"},\"web\":{\"id\":\"mc-web-dev\",\"domain\":\"https://mc-dev.masastack.com\"}},{\"id\":\"auth\",\"service\":{\"id\":\"auth-service-dev\",\"domain\":\"http://auth-service-dev.masastack.com\"},\"web\":{\"id\":\"auth-web-dev\",\"domain\":\"https://auth-dev.masastack.com\"},\"sso\":{\"id\":\"auth-sso-dev\",\"domain\":\"https://auth-sso-dev.masastack.com\"}}]",
2929
"ELASTIC": "{\"Nodes\": [\"http://es-ydy-new.lonsid.cn:9200\"],\"Index\": \"auth_user_development\"}",
3030
"MASA_ENVIRONMENT": "Development",

0 commit comments

Comments
 (0)