mirror of
https://github.com/whyour/qinglong.git
synced 2026-08-11 19:05:20 +08:00
Add global SSH key configuration in system settings (#2840)
* Initial plan * Add backend support for global SSH keys Co-authored-by: whyour <22700758+whyour@users.noreply.github.com> * Add frontend UI for global SSH keys management Co-authored-by: whyour <22700758+whyour@users.noreply.github.com> * Add SshKeyModel to database initialization Co-authored-by: whyour <22700758+whyour@users.noreply.github.com> * Add SSH config generation for global SSH keys Co-authored-by: whyour <22700758+whyour@users.noreply.github.com> * Add internationalization support for SSH key management UI Co-authored-by: whyour <22700758+whyour@users.noreply.github.com> * Simplify to single global SSH key in system settings Co-authored-by: whyour <22700758+whyour@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
This commit is contained in:
co-authored by
whyour
copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
parent
48abf44ceb
commit
ee2fbe5335
@@ -30,6 +30,7 @@ const dataMap = {
|
||||
'log-remove-frequency': 'logRemoveFrequency',
|
||||
'cron-concurrency': 'cronConcurrency',
|
||||
timezone: 'timezone',
|
||||
'global-ssh-key': 'globalSshKey',
|
||||
};
|
||||
|
||||
const exportModules = [
|
||||
@@ -54,6 +55,7 @@ const Other = ({
|
||||
logRemoveFrequency?: number | null;
|
||||
cronConcurrency?: number | null;
|
||||
timezone?: string | null;
|
||||
globalSshKey?: string | null;
|
||||
}>();
|
||||
const [form] = Form.useForm();
|
||||
const [exportLoading, setExportLoading] = useState(false);
|
||||
@@ -308,6 +310,32 @@ const Other = ({
|
||||
</Button>
|
||||
</Input.Group>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label={intl.get('全局SSH私钥')}
|
||||
name="globalSshKey"
|
||||
tooltip={intl.get('用于访问所有私有仓库的全局SSH私钥')}
|
||||
>
|
||||
<Input.Group compact>
|
||||
<Input.TextArea
|
||||
value={systemConfig?.globalSshKey || ''}
|
||||
style={{ width: 264 }}
|
||||
autoSize={{ minRows: 3, maxRows: 8 }}
|
||||
placeholder={intl.get('请输入完整的SSH私钥内容')}
|
||||
onChange={(e) => {
|
||||
setSystemConfig({ ...systemConfig, globalSshKey: e.target.value });
|
||||
}}
|
||||
/>
|
||||
</Input.Group>
|
||||
<Button
|
||||
type="primary"
|
||||
onClick={() => {
|
||||
updateSystemConfig('global-ssh-key');
|
||||
}}
|
||||
style={{ width: 264, marginTop: 8 }}
|
||||
>
|
||||
{intl.get('确认')}
|
||||
</Button>
|
||||
</Form.Item>
|
||||
<Form.Item label={intl.get('语言')} name="lang">
|
||||
<Select
|
||||
defaultValue={localStorage.getItem('lang') || ''}
|
||||
|
||||
Reference in New Issue
Block a user