mirror of
https://github.com/jumpserver/lina.git
synced 2025-09-25 14:25:23 +00:00
perf: 支持slack通知和认证 (#3556)
This commit is contained in:
@@ -1797,6 +1797,7 @@
|
|||||||
"weComTest": "Test",
|
"weComTest": "Test",
|
||||||
"FeiShu": "FeiShu",
|
"FeiShu": "FeiShu",
|
||||||
"feiShuTest": "Test",
|
"feiShuTest": "Test",
|
||||||
|
"Slack": "Slack",
|
||||||
"setting": "Setting",
|
"setting": "Setting",
|
||||||
"OtherAuth": "Other Auth",
|
"OtherAuth": "Other Auth",
|
||||||
"OAuth2LogoTip": "Tip: Authentication service provider (recommended image size: 64px*64px)",
|
"OAuth2LogoTip": "Tip: Authentication service provider (recommended image size: 64px*64px)",
|
||||||
@@ -1954,6 +1955,7 @@
|
|||||||
"setWeCom": "Set wecom login",
|
"setWeCom": "Set wecom login",
|
||||||
"setDingTalk": "Set dingtalk login",
|
"setDingTalk": "Set dingtalk login",
|
||||||
"setFeiShu": "Set feishu login",
|
"setFeiShu": "Set feishu login",
|
||||||
|
"setSlack": "Set Slack login",
|
||||||
"DatePasswordUpdated": "Date password updated",
|
"DatePasswordUpdated": "Date password updated",
|
||||||
"DescribeOfGuide": "Welcome to JumpServer. Click here for more information",
|
"DescribeOfGuide": "Welcome to JumpServer. Click here for more information",
|
||||||
"Email": "Email",
|
"Email": "Email",
|
||||||
@@ -1961,6 +1963,7 @@
|
|||||||
"WeCom": "WeCom",
|
"WeCom": "WeCom",
|
||||||
"DingTalk": "DingTalk",
|
"DingTalk": "DingTalk",
|
||||||
"FeiShu": "FeiShu",
|
"FeiShu": "FeiShu",
|
||||||
|
"Slack": "Slack",
|
||||||
"FingerPrint": "Fingerprint",
|
"FingerPrint": "Fingerprint",
|
||||||
"FirstLogin": "First login",
|
"FirstLogin": "First login",
|
||||||
"InviteUser": "Invite user",
|
"InviteUser": "Invite user",
|
||||||
|
@@ -1800,6 +1800,7 @@
|
|||||||
"dingTalkTest": "テスト",
|
"dingTalkTest": "テスト",
|
||||||
"weComTest": "テスト",
|
"weComTest": "テスト",
|
||||||
"FeiShu": "本を飛ばす",
|
"FeiShu": "本を飛ばす",
|
||||||
|
"Slack": "Slack",
|
||||||
"SMS": "SMS設定",
|
"SMS": "SMS設定",
|
||||||
"feiShuTest": "テスト",
|
"feiShuTest": "テスト",
|
||||||
"setting": "設定",
|
"setting": "設定",
|
||||||
@@ -1946,6 +1947,7 @@
|
|||||||
"WeCom": "企業wechat",
|
"WeCom": "企業wechat",
|
||||||
"DingTalk": "ホッチキス",
|
"DingTalk": "ホッチキス",
|
||||||
"FeiShu": "本を飛ばす",
|
"FeiShu": "本を飛ばす",
|
||||||
|
"Slack": "Slack",
|
||||||
"FingerPrint": "指紋",
|
"FingerPrint": "指紋",
|
||||||
"FirstLogin": "初回ログイン",
|
"FirstLogin": "初回ログイン",
|
||||||
"OrgUser": "組織ユーザー",
|
"OrgUser": "組織ユーザー",
|
||||||
@@ -1958,6 +1960,7 @@
|
|||||||
"setWeCom": "企業のwechat認証を設定する",
|
"setWeCom": "企業のwechat認証を設定する",
|
||||||
"setDingTalk": "ホッチキス認証の設定",
|
"setDingTalk": "ホッチキス認証の設定",
|
||||||
"setFeiShu": "飛書認証を設定する",
|
"setFeiShu": "飛書認証を設定する",
|
||||||
|
"setSlack": "Slack認証を設定します",
|
||||||
"HelpText": {
|
"HelpText": {
|
||||||
"MFAOfUserFirstLoginPersonalInformationImprovementPage": "アカウントをより安全にするために、マルチファクタ认证を有効にします。 <Br/> 有効にすると、次回のログイン時に多因子認証バインディングプロセスに入ります。また、 (個人情報-> クイック修正-> 多因子設定の変更) もできます。で直接紐付けます",
|
"MFAOfUserFirstLoginPersonalInformationImprovementPage": "アカウントをより安全にするために、マルチファクタ认证を有効にします。 <Br/> 有効にすると、次回のログイン時に多因子認証バインディングプロセスに入ります。また、 (個人情報-> クイック修正-> 多因子設定の変更) もできます。で直接紐付けます",
|
||||||
"MFAOfUserFirstLoginUserGuidePage": "あなたと会社の安全を守るために、あなたのアカウント、パスワード、鍵などの重要な機密情報を大切に保管してください (例: 複雑なパスワードを設定し、多因子認証を有効にする) <br> メールボックス、携帯電話番号、微信などの個人情報は、ユーザー認証やプラットフォーム内部のメッセージ通知としてのみ使用されています。",
|
"MFAOfUserFirstLoginUserGuidePage": "あなたと会社の安全を守るために、あなたのアカウント、パスワード、鍵などの重要な機密情報を大切に保管してください (例: 複雑なパスワードを設定し、多因子認証を有効にする) <br> メールボックス、携帯電話番号、微信などの個人情報は、ユーザー認証やプラットフォーム内部のメッセージ通知としてのみ使用されています。",
|
||||||
|
@@ -1778,6 +1778,7 @@
|
|||||||
"dingTalkTest": "测试",
|
"dingTalkTest": "测试",
|
||||||
"weComTest": "测试",
|
"weComTest": "测试",
|
||||||
"FeiShu": "飞书",
|
"FeiShu": "飞书",
|
||||||
|
"Slack": "Slack",
|
||||||
"SMS": "短信设置",
|
"SMS": "短信设置",
|
||||||
"feiShuTest": "测试",
|
"feiShuTest": "测试",
|
||||||
"setting": "设置",
|
"setting": "设置",
|
||||||
@@ -1929,6 +1930,7 @@
|
|||||||
"WeCom": "企业微信",
|
"WeCom": "企业微信",
|
||||||
"DingTalk": "钉钉",
|
"DingTalk": "钉钉",
|
||||||
"FeiShu": "飞书",
|
"FeiShu": "飞书",
|
||||||
|
"Slack": "Slack",
|
||||||
"FingerPrint": "指纹",
|
"FingerPrint": "指纹",
|
||||||
"FirstLogin": "首次登录",
|
"FirstLogin": "首次登录",
|
||||||
"OrgUser": "组织用户",
|
"OrgUser": "组织用户",
|
||||||
@@ -1941,6 +1943,7 @@
|
|||||||
"setWeCom": "设置企业微信认证",
|
"setWeCom": "设置企业微信认证",
|
||||||
"setDingTalk": "设置钉钉认证",
|
"setDingTalk": "设置钉钉认证",
|
||||||
"setFeiShu": "设置飞书认证",
|
"setFeiShu": "设置飞书认证",
|
||||||
|
"setSlack": "设置Slack认证",
|
||||||
"HelpText": {
|
"HelpText": {
|
||||||
"MFAOfUserFirstLoginPersonalInformationImprovementPage": "启用多因子认证,使账号更加安全。<br/> 启用之后您将会在下次登录时进入多因子认证绑定流程;您也可以在(个人信息->快速修改->更改多因子设置)中直接绑定!",
|
"MFAOfUserFirstLoginPersonalInformationImprovementPage": "启用多因子认证,使账号更加安全。<br/> 启用之后您将会在下次登录时进入多因子认证绑定流程;您也可以在(个人信息->快速修改->更改多因子设置)中直接绑定!",
|
||||||
"MFAOfUserFirstLoginUserGuidePage": "为了保护您和公司的安全,请妥善保管您的账户、密码和密钥等重要敏感信息;(如:设置复杂密码,并启用多因子认证)<br/> 邮箱、手机号、微信等个人信息,仅作为用户认证和平台内部消息通知使用。",
|
"MFAOfUserFirstLoginUserGuidePage": "为了保护您和公司的安全,请妥善保管您的账户、密码和密钥等重要敏感信息;(如:设置复杂密码,并启用多因子认证)<br/> 邮箱、手机号、微信等个人信息,仅作为用户认证和平台内部消息通知使用。",
|
||||||
|
@@ -101,6 +101,23 @@ export default {
|
|||||||
}.bind(this)
|
}.bind(this)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('users.setSlack'),
|
||||||
|
attrs: {
|
||||||
|
type: 'primary',
|
||||||
|
label: this.getLabel('slack'),
|
||||||
|
disabled: this.isDisabled('slack'),
|
||||||
|
showTip: this.isDisabled('slack'),
|
||||||
|
tip: this.$t('users.UnbindHelpText')
|
||||||
|
},
|
||||||
|
has: this.$store.getters.publicSettings.AUTH_SLACK,
|
||||||
|
callbacks: {
|
||||||
|
click: function() {
|
||||||
|
this.currentEdit = 'slack'
|
||||||
|
this.verifyDone()
|
||||||
|
}.bind(this)
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('users.SetMFA'),
|
title: this.$t('users.SetMFA'),
|
||||||
attrs: {
|
attrs: {
|
||||||
@@ -212,6 +229,18 @@ export default {
|
|||||||
callbacks: {
|
callbacks: {
|
||||||
change: this.updateUserReceiveBackends
|
change: this.updateUserReceiveBackends
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('setting.Slack'),
|
||||||
|
type: 'switch',
|
||||||
|
attrs: {
|
||||||
|
name: 'slack',
|
||||||
|
model: this.object?.receive_backends.indexOf('slack') !== -1
|
||||||
|
},
|
||||||
|
has: this.$store.getters.publicSettings.AUTH_SLACK,
|
||||||
|
callbacks: {
|
||||||
|
change: this.updateUserReceiveBackends
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@@ -12,7 +12,7 @@ import BaseAuth from './Base'
|
|||||||
import { UpdateToken } from '@/components/Form/FormFields'
|
import { UpdateToken } from '@/components/Form/FormFields'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Wecom',
|
name: 'Feishu',
|
||||||
components: {
|
components: {
|
||||||
BaseAuth
|
BaseAuth
|
||||||
},
|
},
|
||||||
|
82
src/views/settings/Auth/Slack.vue
Normal file
82
src/views/settings/Auth/Slack.vue
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
<template>
|
||||||
|
<BaseAuth
|
||||||
|
:config="settings"
|
||||||
|
:title="$tc('setting.Slack')"
|
||||||
|
enable-field="AUTH_SLACK"
|
||||||
|
v-on="$listeners"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import BaseAuth from './Base'
|
||||||
|
import { UpdateToken } from '@/components/Form/FormFields'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'Slack',
|
||||||
|
components: {
|
||||||
|
BaseAuth
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
const vm = this
|
||||||
|
return {
|
||||||
|
settings: {
|
||||||
|
url: '/api/v1/settings/setting/?category=slack',
|
||||||
|
hasDetailInMsg: false,
|
||||||
|
moreButtons: [
|
||||||
|
{
|
||||||
|
title: this.$t('common.Test'),
|
||||||
|
loading: false,
|
||||||
|
callback: function(value, form, btn) {
|
||||||
|
btn.loading = true
|
||||||
|
vm.$axios.post(
|
||||||
|
'/api/v1/settings/slack/testing/',
|
||||||
|
value
|
||||||
|
).then(res => {
|
||||||
|
vm.$message.success(res['msg'])
|
||||||
|
}).catch(() => {
|
||||||
|
vm.$log.error('err occur')
|
||||||
|
}).finally(() => { btn.loading = false })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
encryptedFields: ['SLACK_SECRET'],
|
||||||
|
fields: [
|
||||||
|
[
|
||||||
|
this.$t('common.BasicInfo'),
|
||||||
|
[
|
||||||
|
'AUTH_SLACK', 'SLACK_CLIENT_ID', 'SLACK_CLIENT_SECRET', 'SLACK_BOT_TOKEN'
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
fieldsMeta: {
|
||||||
|
SLACK_APP_SECRET: {
|
||||||
|
component: UpdateToken
|
||||||
|
},
|
||||||
|
SLACK_BOT_TOKEN: {
|
||||||
|
component: UpdateToken
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 不清理的话,编辑secret,在删除提交会报错
|
||||||
|
cleanFormValue(data) {
|
||||||
|
const needDeleteValues = ['SLACK_CLIENT_SECRET', 'SLACK_BOT_TOKEN']
|
||||||
|
needDeleteValues.map((k) => {
|
||||||
|
if (!data[k]) {
|
||||||
|
delete data[k]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
console.log('data: ', data)
|
||||||
|
return data
|
||||||
|
},
|
||||||
|
submitMethod() {
|
||||||
|
return 'put'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
@@ -21,6 +21,7 @@ import SSO from './SSO'
|
|||||||
import SAML2 from './SAML2'
|
import SAML2 from './SAML2'
|
||||||
import OAuth2 from './OAuth2'
|
import OAuth2 from './OAuth2'
|
||||||
import Passkey from './Passkey.vue'
|
import Passkey from './Passkey.vue'
|
||||||
|
import Slack from './Slack.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
@@ -37,7 +38,8 @@ export default {
|
|||||||
SSO,
|
SSO,
|
||||||
SAML2,
|
SAML2,
|
||||||
OAuth2,
|
OAuth2,
|
||||||
Passkey
|
Passkey,
|
||||||
|
Slack
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
let extraBackends = []
|
let extraBackends = []
|
||||||
@@ -73,6 +75,11 @@ export default {
|
|||||||
name: 'FeiShu',
|
name: 'FeiShu',
|
||||||
key: 'AUTH_FEISHU'
|
key: 'AUTH_FEISHU'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('setting.Slack'),
|
||||||
|
name: 'Slack',
|
||||||
|
key: 'AUTH_SLACK'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('setting.Radius'),
|
title: this.$t('setting.Radius'),
|
||||||
name: 'Radius',
|
name: 'Radius',
|
||||||
|
Reference in New Issue
Block a user