mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-24 03:57:22 +08:00
oauth provider email_claim required
This commit is contained in:
@@ -41,8 +41,8 @@ class ClientResource extends Resource
|
|||||||
{
|
{
|
||||||
return $form
|
return $form
|
||||||
->schema([
|
->schema([
|
||||||
Forms\Components\TextInput::make('name')->label(__('label.name')),
|
Forms\Components\TextInput::make('name')->label(__('label.name'))->required(),
|
||||||
Forms\Components\TextInput::make('redirect')->label(__('oauth.redirect')),
|
Forms\Components\TextInput::make('redirect')->label(__('oauth.redirect'))->required(),
|
||||||
Forms\Components\Radio::make('skips_authorization')
|
Forms\Components\Radio::make('skips_authorization')
|
||||||
->options(self::getYesNoOptions())
|
->options(self::getYesNoOptions())
|
||||||
->inline()
|
->inline()
|
||||||
|
|||||||
@@ -68,12 +68,14 @@ class ProviderResource extends Resource
|
|||||||
->label(__('oauth.id_claim'))
|
->label(__('oauth.id_claim'))
|
||||||
->required()
|
->required()
|
||||||
,
|
,
|
||||||
|
Forms\Components\TextInput::make('email_claim')
|
||||||
|
->label(__('oauth.email_claim'))
|
||||||
|
->required()
|
||||||
|
,
|
||||||
Forms\Components\TextInput::make('username_claim')
|
Forms\Components\TextInput::make('username_claim')
|
||||||
->label(__('oauth.username_claim'))
|
->label(__('oauth.username_claim'))
|
||||||
,
|
,
|
||||||
Forms\Components\TextInput::make('email_claim')
|
|
||||||
->label(__('oauth.email_claim'))
|
|
||||||
,
|
|
||||||
Forms\Components\TextInput::make('level_claim')
|
Forms\Components\TextInput::make('level_claim')
|
||||||
->label(__('oauth.level_claim'))
|
->label(__('oauth.level_claim'))
|
||||||
,
|
,
|
||||||
|
|||||||
@@ -93,8 +93,16 @@ class OauthController extends Controller
|
|||||||
if (empty($providerUserId)) {
|
if (empty($providerUserId)) {
|
||||||
throw new NexusException(nexus_trans('oauth.get_provider_user_id_error', ['id_claim' => $provider->id_claim]));
|
throw new NexusException(nexus_trans('oauth.get_provider_user_id_error', ['id_claim' => $provider->id_claim]));
|
||||||
}
|
}
|
||||||
$providerUsername = data_get($userInfo, $provider->username_claim);
|
|
||||||
$providerEmail = data_get($userInfo, $provider->email_claim);
|
$providerEmail = data_get($userInfo, $provider->email_claim);
|
||||||
|
if (empty($providerEmail)) {
|
||||||
|
throw new NexusException(nexus_trans('oauth.get_provider_email_error', ['email_claim' => $provider->email_claim]));
|
||||||
|
}
|
||||||
|
$sameEmailUser = User::query()->where('email', $providerEmail)->first();
|
||||||
|
if ($sameEmailUser) {
|
||||||
|
//login to bind is better, not implement this time
|
||||||
|
throw new NexusException(nexus_trans('oauth.provider_email_already_exists', ['email' => $providerEmail]));
|
||||||
|
}
|
||||||
|
$providerUsername = data_get($userInfo, $provider->username_claim);
|
||||||
$providerLevel = data_get($userInfo, $provider->level_claim);
|
$providerLevel = data_get($userInfo, $provider->level_claim);
|
||||||
$homeUrl = getSchemeAndHttpHost() . "/index.php";
|
$homeUrl = getSchemeAndHttpHost() . "/index.php";
|
||||||
$socialAccount = SocialAccount::query()
|
$socialAccount = SocialAccount::query()
|
||||||
@@ -116,13 +124,7 @@ class OauthController extends Controller
|
|||||||
throw new NexusException(nexus_trans("oauth.provider_level_not_allowed", ['level_limit' => $provider->level_limit]));
|
throw new NexusException(nexus_trans("oauth.provider_level_not_allowed", ['level_limit' => $provider->level_limit]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($providerEmail) {
|
|
||||||
$sameEmailUser = User::query()->where('email', $providerEmail)->first();
|
|
||||||
if ($sameEmailUser) {
|
|
||||||
//login to bind is better, not implement this time
|
|
||||||
throw new NexusException(nexus_trans('oauth.provider_email_already_exists', ['email' => $providerEmail]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$newUser = $this->createUser($providerUsername, $providerEmail);
|
$newUser = $this->createUser($providerUsername, $providerEmail);
|
||||||
$socialAccountData = [
|
$socialAccountData = [
|
||||||
'user_id' => $newUser->id,
|
'user_id' => $newUser->id,
|
||||||
|
|||||||
@@ -26,4 +26,5 @@ return [
|
|||||||
'get_provider_level_error' => 'Unable to get user level via field :level_claim',
|
'get_provider_level_error' => 'Unable to get user level via field :level_claim',
|
||||||
'provider_level_not_ allowed' => 'Only users with level :level_limit or above are allowed to log in',
|
'provider_level_not_ allowed' => 'Only users with level :level_limit or above are allowed to log in',
|
||||||
'provider_email_already_exists' => 'Email: :email is already in use',
|
'provider_email_already_exists' => 'Email: :email is already in use',
|
||||||
|
'get_provider_email_error' => 'Unable to get user email via field :email_claim',
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -26,4 +26,5 @@ return [
|
|||||||
'get_provider_level_error' => '无法通过字段 :level_claim 获取用户等级',
|
'get_provider_level_error' => '无法通过字段 :level_claim 获取用户等级',
|
||||||
'provider_level_not_allowed' => '仅允许 :level_limit 或以上等级的用户登录',
|
'provider_level_not_allowed' => '仅允许 :level_limit 或以上等级的用户登录',
|
||||||
'provider_email_already_exists' => '邮箱::email 已经被使用',
|
'provider_email_already_exists' => '邮箱::email 已经被使用',
|
||||||
|
'get_provider_email_error' => '无法通过字段 :email_claim 获取用户邮箱',
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -26,4 +26,5 @@ return [
|
|||||||
'get_provider_level_error' => '無法通過字段 :level_claim 獲取用戶等級',
|
'get_provider_level_error' => '無法通過字段 :level_claim 獲取用戶等級',
|
||||||
'provider_level_not_allowed' => '僅允許 :level_limit 或以上等級的用戶登錄',
|
'provider_level_not_allowed' => '僅允許 :level_limit 或以上等級的用戶登錄',
|
||||||
'provider_email_already_exists' => '郵箱::email 已經被使用',
|
'provider_email_already_exists' => '郵箱::email 已經被使用',
|
||||||
|
'get_provider_email_error' => '無法通過字段 :email_claim 獲取用戶郵箱',
|
||||||
];
|
];
|
||||||
|
|||||||
Reference in New Issue
Block a user