Simplify api and clean zh_cn lang file
This commit is contained in:
parent
68c31eb8fa
commit
02b9d9f54b
@ -40,7 +40,7 @@
|
||||
|
||||
<script>
|
||||
import { mapState, mapMutations } from 'vuex'
|
||||
import api from '@/utils/api'
|
||||
import { getSettings, updateSettings } from '@/utils/api'
|
||||
|
||||
export default {
|
||||
name: 'settings',
|
||||
@ -54,24 +54,20 @@ export default {
|
||||
...mapState([ 'user' ])
|
||||
},
|
||||
created () {
|
||||
api.getCommands()
|
||||
.then(commands => {
|
||||
for (let key in commands) {
|
||||
getSettings()
|
||||
.then(settings => {
|
||||
for (let key in settings.plugins) {
|
||||
this.plugins.push(this.parsePlugin(key, settings.plugins[key]))
|
||||
}
|
||||
|
||||
for (let key in settings.commands) {
|
||||
this.commands.push({
|
||||
name: key,
|
||||
value: commands[key].join('\n')
|
||||
value: settings.commands[key].join('\n')
|
||||
})
|
||||
}
|
||||
})
|
||||
.catch(error => { this.showError(error) })
|
||||
|
||||
api.getPlugins()
|
||||
.then(plugins => {
|
||||
for (let key in plugins) {
|
||||
this.plugins.push(this.parsePlugin(key, plugins[key]))
|
||||
}
|
||||
})
|
||||
.catch(error => { this.showError(error) })
|
||||
},
|
||||
methods: {
|
||||
...mapMutations([ 'showSuccess', 'showError' ]),
|
||||
@ -100,7 +96,7 @@ export default {
|
||||
commands[command.name] = value
|
||||
}
|
||||
|
||||
api.updateCommands(commands)
|
||||
updateSettings(commands, 'commands')
|
||||
.then(() => { this.showSuccess(this.$t('settings.commandsUpdated')) })
|
||||
.catch(error => { this.showError(error) })
|
||||
},
|
||||
@ -127,9 +123,7 @@ export default {
|
||||
plugins[plugin.name] = p
|
||||
}
|
||||
|
||||
console.log(plugins)
|
||||
|
||||
api.updatePlugins(plugins)
|
||||
updateSettings(plugins, 'plugins')
|
||||
.then(() => { this.showSuccess(this.$t('settings.pluginsUpdated')) })
|
||||
.catch(error => { this.showError(error) })
|
||||
},
|
||||
|
||||
@ -71,7 +71,7 @@ prompts:
|
||||
downloadMessage: 请选择要下载的压缩格式.
|
||||
error: 出了一点问题...
|
||||
fileInfo: 文件信息
|
||||
filesSelected: "选择 {count} 个文件."
|
||||
filesSelected: '选择 {count} 个文件.'
|
||||
lastModified: 最后修改
|
||||
move: 移动
|
||||
moveMessage: '请选择欲移动至的目录:'
|
||||
@ -82,7 +82,7 @@ prompts:
|
||||
numberDirs: 目录数
|
||||
numberFiles: 文件数
|
||||
rename: 重命名
|
||||
renameMessage: 请输入新名称, 旧名称是:
|
||||
renameMessage: '请输入新名称, 旧名称是:'
|
||||
size: 大小
|
||||
settings:
|
||||
admin: 管理员
|
||||
@ -90,12 +90,13 @@ settings:
|
||||
allowCommands: 执行命令(Linux 代码)
|
||||
allowEdit: 编辑、重命名或删除文件/目录.
|
||||
allowNew: 创建新文件和目录.
|
||||
avoidChanges: "(留空以避免更改)"
|
||||
avoidChanges: '(留空以避免更改)'
|
||||
changePassword: 更改密码
|
||||
commands: 命令(linux 代码)
|
||||
commandsHelp: Here you can set commands that are executed in the named events.
|
||||
每行一条命令. If the event is related to files, such as before and after saving,
|
||||
the environment variable "file" will be available with the path of the file.
|
||||
commandsHelp: >
|
||||
'Here you can set commands that are executed in the named events.
|
||||
每行一条命令. If the event is related to files, such as before and after saving,
|
||||
the environment variable "file" will be available with the path of the file.'
|
||||
commandsUpdated: 命令更新!
|
||||
customStylesheet: 自定义样式表
|
||||
examples: 例子
|
||||
@ -108,19 +109,20 @@ settings:
|
||||
passwordUpdated: 密码更新!
|
||||
permissions: 权限
|
||||
permissionsHelp: >
|
||||
'您可以将该用户设置为管理员 或单独选择各项权限. 如果选择 "管理员(Administrator)" ,
|
||||
将自动检查所有其他选项, 并且该用户可以管理其他用户.'
|
||||
'您可以将该用户设置为管理员 或单独选择各项权限. 如果选择 "管理员(Administrator)" ,
|
||||
将自动检查所有其他选项, 并且该用户可以管理其他用户.'
|
||||
pluginsUpdated: 插件设置更新!
|
||||
profileSettings: 配置文件设置
|
||||
ruleExample1: >
|
||||
'阻止用户访问每个文件夹下任何以 . 开头的文件(隐藏文件, 例如: .git, .gitignore).'
|
||||
'阻止用户访问每个文件夹下任何以 . 开头的文件(隐藏文件, 例如: .git, .gitignore).'
|
||||
ruleExample2: 阻止用户访问其目录范围内任何名为 Caddyfile 的文件/文件夹.
|
||||
rules: 规则
|
||||
rulesHelp1: >
|
||||
'这里您可以为特定用户制定一组允许或不允许的规则,
|
||||
阻止的文件将不会显示到列表中, 用户将无法访问, 支持相对于用户的范围.'
|
||||
rulesHelp2: 每行一条规则, 必须以关键词 {0} 或 {1} 开头. 如果使用正则表达式,
|
||||
然后使用表达式或路径, 则需要在第二列单词加入 {2} .
|
||||
'这里您可以为特定用户制定一组允许或不允许的规则,
|
||||
阻止的文件将不会显示到列表中, 用户将无法访问, 支持相对于用户的范围.'
|
||||
rulesHelp2: >
|
||||
每行一条规则, 必须以关键词 {0} 或 {1} 开头. 如果使用正则表达式,
|
||||
然后使用表达式或路径, 则需要在第二列单词加入 {2} .
|
||||
scope: 目录范围
|
||||
stylesUpdated: 样式更新!
|
||||
user: 用户
|
||||
|
||||
@ -203,10 +203,10 @@ export function download (format, ...files) {
|
||||
window.open(url)
|
||||
}
|
||||
|
||||
export function getCommands () {
|
||||
export function getSettings () {
|
||||
return new Promise((resolve, reject) => {
|
||||
let request = new window.XMLHttpRequest()
|
||||
request.open('GET', `${store.state.baseURL}/api/commands/`, true)
|
||||
request.open('GET', `${store.state.baseURL}/api/settings/`, true)
|
||||
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
||||
|
||||
request.onload = () => {
|
||||
@ -224,10 +224,18 @@ export function getCommands () {
|
||||
})
|
||||
}
|
||||
|
||||
export function updateCommands (commands) {
|
||||
export function updateSettings (param, which) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let data = {
|
||||
what: 'settings',
|
||||
which: which,
|
||||
data: {}
|
||||
}
|
||||
|
||||
data.data[which] = param
|
||||
|
||||
let request = new window.XMLHttpRequest()
|
||||
request.open('PUT', `${store.state.baseURL}/api/commands/`, true)
|
||||
request.open('PUT', `${store.state.baseURL}/api/settings/`, true)
|
||||
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
||||
|
||||
request.onload = () => {
|
||||
@ -240,49 +248,7 @@ export function updateCommands (commands) {
|
||||
break
|
||||
}
|
||||
}
|
||||
request.onerror = (error) => reject(error)
|
||||
request.send(JSON.stringify(commands))
|
||||
})
|
||||
}
|
||||
|
||||
export function getPlugins () {
|
||||
return new Promise((resolve, reject) => {
|
||||
let request = new window.XMLHttpRequest()
|
||||
request.open('GET', `${store.state.baseURL}/api/plugins/`, true)
|
||||
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
||||
|
||||
request.onload = () => {
|
||||
switch (request.status) {
|
||||
case 200:
|
||||
resolve(JSON.parse(request.responseText))
|
||||
break
|
||||
default:
|
||||
reject(request.responseText)
|
||||
break
|
||||
}
|
||||
}
|
||||
request.onerror = (error) => reject(error)
|
||||
request.send()
|
||||
})
|
||||
}
|
||||
|
||||
export function updatePlugins (data) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let request = new window.XMLHttpRequest()
|
||||
request.open('PUT', `${store.state.baseURL}/api/plugins/`, true)
|
||||
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
||||
|
||||
request.onload = () => {
|
||||
switch (request.status) {
|
||||
case 200:
|
||||
resolve()
|
||||
break
|
||||
default:
|
||||
reject(request.responseText)
|
||||
break
|
||||
}
|
||||
}
|
||||
request.onerror = (error) => reject(error)
|
||||
request.onerror = (error) => { reject(error) }
|
||||
request.send(JSON.stringify(data))
|
||||
})
|
||||
}
|
||||
@ -411,10 +377,8 @@ export default {
|
||||
search,
|
||||
download,
|
||||
// other things
|
||||
getCommands,
|
||||
updateCommands,
|
||||
getPlugins,
|
||||
updatePlugins,
|
||||
getSettings,
|
||||
updateSettings,
|
||||
// User things
|
||||
newUser,
|
||||
getUser,
|
||||
|
||||
15
settings.go
15
settings.go
@ -16,11 +16,6 @@ type modifySettingsRequest struct {
|
||||
} `json:"data"`
|
||||
}
|
||||
|
||||
type settingsGetRequest struct {
|
||||
Commands map[string][]string `json:"commands"`
|
||||
Plugins map[string][]pluginOption `json:"plugins"`
|
||||
}
|
||||
|
||||
type pluginOption struct {
|
||||
Variable string `json:"variable"`
|
||||
Name string `json:"name"`
|
||||
@ -49,7 +44,7 @@ func parsePutSettingsRequest(r *http.Request) (*modifySettingsRequest, error) {
|
||||
}
|
||||
|
||||
func settingsHandler(c *RequestContext, w http.ResponseWriter, r *http.Request) (int, error) {
|
||||
if r.URL.Path != "" {
|
||||
if r.URL.Path != "" && r.URL.Path != "/" {
|
||||
return http.StatusNotFound, nil
|
||||
}
|
||||
|
||||
@ -63,6 +58,11 @@ func settingsHandler(c *RequestContext, w http.ResponseWriter, r *http.Request)
|
||||
return http.StatusMethodNotAllowed, nil
|
||||
}
|
||||
|
||||
type settingsGetRequest struct {
|
||||
Commands map[string][]string `json:"commands"`
|
||||
Plugins map[string][]pluginOption `json:"plugins"`
|
||||
}
|
||||
|
||||
func settingsGetHandler(c *RequestContext, w http.ResponseWriter, r *http.Request) (int, error) {
|
||||
if !c.User.Admin {
|
||||
return http.StatusForbidden, nil
|
||||
@ -98,7 +98,7 @@ func settingsPutHandler(c *RequestContext, w http.ResponseWriter, r *http.Reques
|
||||
if err != nil {
|
||||
return http.StatusBadRequest, err
|
||||
}
|
||||
|
||||
// Update the commands.
|
||||
if mod.Which == "commands" {
|
||||
if err := c.FM.db.Set("config", "commands", mod.Data.Commands); err != nil {
|
||||
return http.StatusInternalServerError, err
|
||||
@ -108,6 +108,7 @@ func settingsPutHandler(c *RequestContext, w http.ResponseWriter, r *http.Reques
|
||||
return http.StatusOK, nil
|
||||
}
|
||||
|
||||
// Update the plugins.
|
||||
if mod.Which == "plugins" {
|
||||
for name, plugin := range mod.Data.Plugins {
|
||||
err = mapstructure.Decode(plugin, c.FM.Plugins[name])
|
||||
|
||||
Loading…
Reference in New Issue
Block a user