From 4bcdec0b35409750381ee3557eee5e8ad5d67881 Mon Sep 17 00:00:00 2001 From: cubic Date: Wed, 11 Jan 2023 15:59:47 +0800 Subject: [PATCH] feat(Admin Settings): add ssh clone address host setting (Github: #132) feat #132 --- application/models/user_model.php | 1 + config.template.yaml | 1 + .../components/unit/RepositoryDashboard.js | 2 +- .../src/components/view/admin/Settings.js | 33 ++++++++++++++++--- www/view/src/helpers/NetworkHelper.js | 4 ++- www/view/src/lang/en-us/Label.js | 2 ++ www/view/src/lang/en-us/Phrase.js | 2 ++ www/view/src/lang/zh-cn/Label.js | 2 ++ www/view/src/lang/zh-cn/Phrase.js | 2 ++ 9 files changed, 43 insertions(+), 6 deletions(-) diff --git a/application/models/user_model.php b/application/models/user_model.php index 7df1c55..943066a 100755 --- a/application/models/user_model.php +++ b/application/models/user_model.php @@ -36,6 +36,7 @@ class User_model extends CI_Model 'unReadNotification' => $extra ? $this->notificationModel->unReadNotificationCount($item['u_key']) : 0, 'status' => $item['u_status'] == COMMON_STATUS_NORMAL, 'host' => YAML_HOST, + 'ssh' => YAML_SSH, ]); } return $result; diff --git a/config.template.yaml b/config.template.yaml index d5e149d..68159dc 100755 --- a/config.template.yaml +++ b/config.template.yaml @@ -1,5 +1,6 @@ --- host: http://localhost +ssh: 'git@localhost:' allowRegister: true email: name: CodeFever Community diff --git a/www/view/src/components/unit/RepositoryDashboard.js b/www/view/src/components/unit/RepositoryDashboard.js index a80a380..347a248 100755 --- a/www/view/src/components/unit/RepositoryDashboard.js +++ b/www/view/src/components/unit/RepositoryDashboard.js @@ -235,7 +235,7 @@ class RepositoryDashboard extends Component { fullWidth variant='outlined' value={ - NetworkHelper.getSSHHost(currentUserInfo) + ':' + + NetworkHelper.getSSHHost(currentUserInfo) + [repositoryConfig.group.name, repositoryConfig.repository.name].join('/') + '.git' } diff --git a/www/view/src/components/view/admin/Settings.js b/www/view/src/components/view/admin/Settings.js index 4dfe259..782135c 100755 --- a/www/view/src/components/view/admin/Settings.js +++ b/www/view/src/components/view/admin/Settings.js @@ -35,6 +35,7 @@ class Settings extends React.Component { this.state = { allowRegister: false, host: '', + ssh: '', email_from: '', email_name: '', pending: true, @@ -55,7 +56,15 @@ class Settings extends React.Component { passPattern: /^http(s)?:\/\/[^/]+$/, errorMessage: this.props.intl.formatMessage( { id: 'message.error._S_invalid' }, - { s: this.props.intl.formatMessage({ id: 'label.url' }) } + { s: this.props.intl.formatMessage({ id: 'label.urlPrefix' }) } + ) + }, + { + name: 'ssh', + passPattern: /^[^@]+@.+$/, + errorMessage: this.props.intl.formatMessage( + { id: 'message.error._S_invalid' }, + { s: this.props.intl.formatMessage({ id: 'label.sshPrefix' }) } ) }, { @@ -103,6 +112,7 @@ class Settings extends React.Component { this.setState({ pending: false, host: data.data.host, + ssh: data.data.ssh, allowRegister: data.data.allowRegister, email_from: data.data.email.from, email_name: data.data.email.name @@ -118,6 +128,7 @@ class Settings extends React.Component { const data = { host: this.state.host, + ssh: this.state.ssh, allowRegister: this.state.allowRegister, email: { name: this.state.email_name, from: this.state.email_from } } @@ -159,13 +170,13 @@ class Settings extends React.Component { - + {intl.formatMessage({ id: 'label.host' })} - {intl.formatMessage({ id: 'label.url' })} + {intl.formatMessage({ id: 'label.urlPrefix' })} this.setState({ host: e.target.value })} /> + + {intl.formatMessage({ id: 'label.sshPrefix' })} + + + this.setState({ ssh: e.target.value })} + /> +   diff --git a/www/view/src/helpers/NetworkHelper.js b/www/view/src/helpers/NetworkHelper.js index b66cd6a..38cb9ca 100755 --- a/www/view/src/helpers/NetworkHelper.js +++ b/www/view/src/helpers/NetworkHelper.js @@ -87,7 +87,9 @@ function getHost (userinfo) { } function getSSHHost (userinfo) { - return userinfo && 'git@' + userinfo.host.replace('http://', '').replace('https://', '') + return userinfo && userinfo.ssh + ? userinfo.ssh + : 'git@' + userinfo.host.replace('http://', '').replace('https://', '') } function makeSlug (input) { diff --git a/www/view/src/lang/en-us/Label.js b/www/view/src/lang/en-us/Label.js index 62a3a69..7b5141c 100755 --- a/www/view/src/lang/en-us/Label.js +++ b/www/view/src/lang/en-us/Label.js @@ -181,6 +181,8 @@ const data = { senderAddress: 'Sender Email Address', register: 'Register', allowRegister: 'Allow Register', + urlPrefix: [Phrase.url, Phrase.prefix].join(phraseSeperator), + sshPrefix: [Phrase.ssh, Phrase.prefix].join(phraseSeperator), support: 'Technical Support', feedback: 'Submit Feedback', diff --git a/www/view/src/lang/en-us/Phrase.js b/www/view/src/lang/en-us/Phrase.js index e3a17ae..5e79d7c 100755 --- a/www/view/src/lang/en-us/Phrase.js +++ b/www/view/src/lang/en-us/Phrase.js @@ -17,7 +17,9 @@ const data = { source: 'Source', target: 'Target', url: 'URL', + ssh: 'SSH', slug: 'Slug', + prefix: 'Prefix', avatar: 'Avatar', icon: 'Icon', joinedAt: 'Joined In', diff --git a/www/view/src/lang/zh-cn/Label.js b/www/view/src/lang/zh-cn/Label.js index 0f4b4b0..02bcd43 100755 --- a/www/view/src/lang/zh-cn/Label.js +++ b/www/view/src/lang/zh-cn/Label.js @@ -181,6 +181,8 @@ const data = { senderAddress: '发件人地址', register: '注册', allowRegister: '开放注册', + urlPrefix: [Phrase.url, ' ', Phrase.prefix].join(phraseSeperator), + sshPrefix: [Phrase.ssh, ' ', Phrase.prefix].join(phraseSeperator), support: '技术支持', feedback: '提交反馈', diff --git a/www/view/src/lang/zh-cn/Phrase.js b/www/view/src/lang/zh-cn/Phrase.js index 8f71a5a..ceecc58 100755 --- a/www/view/src/lang/zh-cn/Phrase.js +++ b/www/view/src/lang/zh-cn/Phrase.js @@ -17,7 +17,9 @@ const data = { source: '源', target: '目标', url: 'URL', + ssh: 'SSH', slug: '标识串', + prefix: '前缀', avatar: '头像', icon: '图标', joinedAt: '加入时间',