🔖 chore: profile page displays icons based on whether third-party login is enabled. (#227)
* feat(系统设置&登录): 修改飞书登录是否启用判断逻辑和设置选项 1. 系统增加是否开启飞书登录选项 2. 登录使用通过系统设置判断是否启用飞书 * perf(用户中心): 优化用户中心绑定的第三方登录是否绑定判断和展示方式 优化用户中心绑定的第三方登录是否绑定判断和展示方式: - 系统启动了指定登录方式并且用户已经绑定该方式则icon高亮,没绑定则默认颜色显示; - 系统没有启动指定的登录方式则不显示指定登录方式icon
This commit is contained in:
parent
af8c249e3f
commit
2b735e6dff
@ -35,6 +35,7 @@ var PasswordRegisterEnabled = true
|
|||||||
var EmailVerificationEnabled = false
|
var EmailVerificationEnabled = false
|
||||||
var GitHubOAuthEnabled = false
|
var GitHubOAuthEnabled = false
|
||||||
var WeChatAuthEnabled = false
|
var WeChatAuthEnabled = false
|
||||||
|
var LarkAuthEnabled = false
|
||||||
var TurnstileCheckEnabled = false
|
var TurnstileCheckEnabled = false
|
||||||
var RegisterEnabled = true
|
var RegisterEnabled = true
|
||||||
|
|
||||||
|
@ -147,6 +147,13 @@ func getLarkUserInfoByCode(code string) (*LarkUser, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func LarkOAuth(c *gin.Context) {
|
func LarkOAuth(c *gin.Context) {
|
||||||
|
if !common.LarkAuthEnabled {
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"message": "管理员未开启通过飞书登录以及注册",
|
||||||
|
"success": false,
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
session := sessions.Default(c)
|
session := sessions.Default(c)
|
||||||
state := c.Query("state")
|
state := c.Query("state")
|
||||||
if state == "" || session.Get("oauth_state") == nil || state != session.Get("oauth_state").(string) {
|
if state == "" || session.Get("oauth_state") == nil || state != session.Get("oauth_state").(string) {
|
||||||
@ -220,6 +227,13 @@ func LarkOAuth(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func LarkBind(c *gin.Context) {
|
func LarkBind(c *gin.Context) {
|
||||||
|
if !common.LarkAuthEnabled {
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"message": "管理员未开启通过飞书登录以及注册",
|
||||||
|
"success": false,
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
code := c.Query("code")
|
code := c.Query("code")
|
||||||
larkUser, err := getLarkUserInfoByCode(code)
|
larkUser, err := getLarkUserInfoByCode(code)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -28,6 +28,7 @@ func GetStatus(c *gin.Context) {
|
|||||||
"email_verification": common.EmailVerificationEnabled,
|
"email_verification": common.EmailVerificationEnabled,
|
||||||
"github_oauth": common.GitHubOAuthEnabled,
|
"github_oauth": common.GitHubOAuthEnabled,
|
||||||
"github_client_id": common.GitHubClientId,
|
"github_client_id": common.GitHubClientId,
|
||||||
|
"lark_login": common.LarkAuthEnabled,
|
||||||
"lark_client_id": common.LarkClientId,
|
"lark_client_id": common.LarkClientId,
|
||||||
"system_name": common.SystemName,
|
"system_name": common.SystemName,
|
||||||
"logo": common.Logo,
|
"logo": common.Logo,
|
||||||
|
@ -32,6 +32,7 @@ func InitOptionMap() {
|
|||||||
common.OptionMap["EmailVerificationEnabled"] = strconv.FormatBool(common.EmailVerificationEnabled)
|
common.OptionMap["EmailVerificationEnabled"] = strconv.FormatBool(common.EmailVerificationEnabled)
|
||||||
common.OptionMap["GitHubOAuthEnabled"] = strconv.FormatBool(common.GitHubOAuthEnabled)
|
common.OptionMap["GitHubOAuthEnabled"] = strconv.FormatBool(common.GitHubOAuthEnabled)
|
||||||
common.OptionMap["WeChatAuthEnabled"] = strconv.FormatBool(common.WeChatAuthEnabled)
|
common.OptionMap["WeChatAuthEnabled"] = strconv.FormatBool(common.WeChatAuthEnabled)
|
||||||
|
common.OptionMap["LarkAuthEnabled"] = strconv.FormatBool(common.LarkAuthEnabled)
|
||||||
common.OptionMap["TurnstileCheckEnabled"] = strconv.FormatBool(common.TurnstileCheckEnabled)
|
common.OptionMap["TurnstileCheckEnabled"] = strconv.FormatBool(common.TurnstileCheckEnabled)
|
||||||
common.OptionMap["RegisterEnabled"] = strconv.FormatBool(common.RegisterEnabled)
|
common.OptionMap["RegisterEnabled"] = strconv.FormatBool(common.RegisterEnabled)
|
||||||
common.OptionMap["AutomaticDisableChannelEnabled"] = strconv.FormatBool(common.AutomaticDisableChannelEnabled)
|
common.OptionMap["AutomaticDisableChannelEnabled"] = strconv.FormatBool(common.AutomaticDisableChannelEnabled)
|
||||||
@ -136,6 +137,7 @@ var optionBoolMap = map[string]*bool{
|
|||||||
"EmailVerificationEnabled": &common.EmailVerificationEnabled,
|
"EmailVerificationEnabled": &common.EmailVerificationEnabled,
|
||||||
"GitHubOAuthEnabled": &common.GitHubOAuthEnabled,
|
"GitHubOAuthEnabled": &common.GitHubOAuthEnabled,
|
||||||
"WeChatAuthEnabled": &common.WeChatAuthEnabled,
|
"WeChatAuthEnabled": &common.WeChatAuthEnabled,
|
||||||
|
"LarkAuthEnabled": &common.LarkAuthEnabled,
|
||||||
"TurnstileCheckEnabled": &common.TurnstileCheckEnabled,
|
"TurnstileCheckEnabled": &common.TurnstileCheckEnabled,
|
||||||
"RegisterEnabled": &common.RegisterEnabled,
|
"RegisterEnabled": &common.RegisterEnabled,
|
||||||
"EmailDomainRestrictionEnabled": &common.EmailDomainRestrictionEnabled,
|
"EmailDomainRestrictionEnabled": &common.EmailDomainRestrictionEnabled,
|
||||||
|
@ -22,7 +22,10 @@ const config = {
|
|||||||
turnstile_site_key: '',
|
turnstile_site_key: '',
|
||||||
version: '',
|
version: '',
|
||||||
wechat_login: false,
|
wechat_login: false,
|
||||||
wechat_qrcode: ''
|
wechat_qrcode: '',
|
||||||
|
lark_login: false,
|
||||||
|
lark_client_id: '',
|
||||||
|
telegram_bot: ''
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ const LoginForm = ({ ...others }) => {
|
|||||||
<WechatModal open={openWechat} handleClose={handleWechatClose} wechatLogin={wechatLogin} qrCode={siteInfo.wechat_qrcode} />
|
<WechatModal open={openWechat} handleClose={handleWechatClose} wechatLogin={wechatLogin} qrCode={siteInfo.wechat_qrcode} />
|
||||||
</Grid>
|
</Grid>
|
||||||
)}
|
)}
|
||||||
{siteInfo.lark_client_id && (
|
{siteInfo.lark_login && (
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
<AnimateButton>
|
<AnimateButton>
|
||||||
<Button
|
<Button
|
||||||
|
@ -144,21 +144,29 @@ export default function Profile() {
|
|||||||
spacing={2}
|
spacing={2}
|
||||||
sx={{ paddingBottom: '20px' }}
|
sx={{ paddingBottom: '20px' }}
|
||||||
>
|
>
|
||||||
<Label variant="ghost" color={inputs.wechat_id ? 'primary' : 'default'}>
|
{status.wechat_login && (
|
||||||
<IconBrandWechat /> {inputs.wechat_id || '未绑定'}
|
<Label variant="ghost" color={inputs.wechat_id ? 'primary' : 'default'}>
|
||||||
</Label>
|
<IconBrandWechat /> {inputs.wechat_id || '未绑定'}
|
||||||
<Label variant="ghost" color={inputs.github_id ? 'primary' : 'default'}>
|
</Label>
|
||||||
<IconBrandGithub /> {inputs.github_id || '未绑定'}
|
)}
|
||||||
</Label>
|
{status.github_oauth && (
|
||||||
|
<Label variant="ghost" color={inputs.github_id ? 'primary' : 'default'}>
|
||||||
|
<IconBrandGithub /> {inputs.github_id || '未绑定'}
|
||||||
|
</Label>
|
||||||
|
)}
|
||||||
<Label variant="ghost" color={inputs.email ? 'primary' : 'default'}>
|
<Label variant="ghost" color={inputs.email ? 'primary' : 'default'}>
|
||||||
<IconMail /> {inputs.email || '未绑定'}
|
<IconMail /> {inputs.email || '未绑定'}
|
||||||
</Label>
|
</Label>
|
||||||
<Label variant="ghost" color={inputs.telegram_id ? 'primary' : 'default'}>
|
{status.telegram_bot && (
|
||||||
<IconBrandTelegram /> {inputs.telegram_id || '未绑定'}
|
<Label variant="ghost" color={inputs.telegram_id ? 'primary' : 'default'}>
|
||||||
</Label>
|
<IconBrandTelegram /> {inputs.telegram_id || '未绑定'}
|
||||||
<Label variant="ghost" color={inputs.lark_id ? 'primary' : 'default'}>
|
</Label>
|
||||||
<SvgIcon component={Lark} inheritViewBox="0 0 24 24" /> {inputs.lark_id || '未绑定'}
|
)}
|
||||||
</Label>
|
{status.lark_login && (
|
||||||
|
<Label variant="ghost" color={inputs.lark_id ? 'primary' : 'default'}>
|
||||||
|
<SvgIcon component={Lark} inheritViewBox="0 0 24 24" /> {inputs.lark_id || '未绑定'}
|
||||||
|
</Label>
|
||||||
|
)}
|
||||||
</Stack>
|
</Stack>
|
||||||
<SubCard title="个人信息">
|
<SubCard title="个人信息">
|
||||||
<Grid container spacing={2}>
|
<Grid container spacing={2}>
|
||||||
|
@ -32,6 +32,7 @@ const SystemSetting = () => {
|
|||||||
GitHubOAuthEnabled: '',
|
GitHubOAuthEnabled: '',
|
||||||
GitHubClientId: '',
|
GitHubClientId: '',
|
||||||
GitHubClientSecret: '',
|
GitHubClientSecret: '',
|
||||||
|
LarkAuthEnabled: '',
|
||||||
LarkClientId: '',
|
LarkClientId: '',
|
||||||
LarkClientSecret: '',
|
LarkClientSecret: '',
|
||||||
Notice: '',
|
Notice: '',
|
||||||
@ -95,6 +96,7 @@ const SystemSetting = () => {
|
|||||||
case 'EmailVerificationEnabled':
|
case 'EmailVerificationEnabled':
|
||||||
case 'GitHubOAuthEnabled':
|
case 'GitHubOAuthEnabled':
|
||||||
case 'WeChatAuthEnabled':
|
case 'WeChatAuthEnabled':
|
||||||
|
case 'LarkAuthEnabled':
|
||||||
case 'TurnstileCheckEnabled':
|
case 'TurnstileCheckEnabled':
|
||||||
case 'EmailDomainRestrictionEnabled':
|
case 'EmailDomainRestrictionEnabled':
|
||||||
case 'RegisterEnabled':
|
case 'RegisterEnabled':
|
||||||
@ -298,6 +300,12 @@ const SystemSetting = () => {
|
|||||||
control={<Checkbox checked={inputs.WeChatAuthEnabled === 'true'} onChange={handleInputChange} name="WeChatAuthEnabled" />}
|
control={<Checkbox checked={inputs.WeChatAuthEnabled === 'true'} onChange={handleInputChange} name="WeChatAuthEnabled" />}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
<Grid xs={12} md={3}>
|
||||||
|
<FormControlLabel
|
||||||
|
label="允许通过飞书登录 & 注册"
|
||||||
|
control={<Checkbox checked={inputs.LarkAuthEnabled === 'true'} onChange={handleInputChange} name="LarkAuthEnabled" />}
|
||||||
|
/>
|
||||||
|
</Grid>
|
||||||
<Grid xs={12} md={3}>
|
<Grid xs={12} md={3}>
|
||||||
<FormControlLabel
|
<FormControlLabel
|
||||||
label="允许新用户注册(此项为否时,新用户将无法以任何方式进行注册)"
|
label="允许新用户注册(此项为否时,新用户将无法以任何方式进行注册)"
|
||||||
|
Loading…
Reference in New Issue
Block a user