2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 07:57:21 +08:00

feat: 添加部分路由

This commit is contained in:
耗子
2024-10-09 23:41:26 +08:00
parent f77e4d17fc
commit c5d0b31251
4 changed files with 112 additions and 45 deletions

View File

@@ -113,7 +113,7 @@ func Http(r chi.Router) {
})
r.Route("/app", func(r chi.Router) {
//r.Use(middleware.MustLogin)
r.Use(middleware.MustLogin)
app := service.NewAppService()
r.Get("/list", app.List)
r.Post("/install", app.Install)

View File

@@ -2,7 +2,9 @@ package service
import (
"context"
"errors"
"fmt"
"gorm.io/gorm"
"path/filepath"
"github.com/go-rat/utils/hash"
@@ -95,17 +97,73 @@ func (s *CliService) Info(ctx context.Context, cmd *cli.Command) error {
}
func (s *CliService) UserList(ctx context.Context, cmd *cli.Command) error {
println("Hello, World!")
users := make([]biz.User, 0)
if err := app.Orm.Find(&users).Error; err != nil {
return fmt.Errorf("获取用户列表失败:%v", err)
}
for _, user := range users {
color.Greenln(fmt.Sprintf("ID: %d, 用户名: %s, 邮箱: %s, 创建日期: %s", user.ID, user.Username, user.Email, user.CreatedAt.Format("2006-01-02 15:04:05")))
}
return nil
}
func (s *CliService) UserName(ctx context.Context, cmd *cli.Command) error {
println("Hello, World!")
user := new(biz.User)
oldUsername := cmd.Args().Get(0)
newUsername := cmd.Args().Get(1)
if oldUsername == "" {
return fmt.Errorf("旧用户名不能为空")
}
if newUsername == "" {
return fmt.Errorf("新用户名不能为空")
}
if err := app.Orm.Where("username", oldUsername).First(user).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return fmt.Errorf("用户不存在")
} else {
return fmt.Errorf("获取用户失败:%v", err)
}
}
user.Username = newUsername
if err := app.Orm.Save(user).Error; err != nil {
return fmt.Errorf("用户名修改失败:%v", err)
}
return nil
}
func (s *CliService) UserPassword(ctx context.Context, cmd *cli.Command) error {
println("Hello, World!")
user := new(biz.User)
username := cmd.Args().Get(0)
password := cmd.Args().Get(1)
if username == "" || password == "" {
return fmt.Errorf("用户名和密码不能为空")
}
if len(password) < 6 {
return fmt.Errorf("密码长度不能小于6")
}
if err := app.Orm.Where("username", username).First(user).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return fmt.Errorf("用户不存在")
} else {
return fmt.Errorf("获取用户失败:%v", err)
}
}
hashed, err := s.hash.Make(password)
if err != nil {
return fmt.Errorf("密码生成失败:%v", err)
}
user.Password = hashed
if err = app.Orm.Save(user).Error; err != nil {
return fmt.Errorf("密码修改失败:%v", err)
}
return nil
}

View File

@@ -34,18 +34,18 @@
"remove": "^0.1.5",
"vue": "^3.5.11",
"vue-echarts": "^7.0.3",
"vue-i18n": "^10.0.3",
"vue-i18n": "^10.0.4",
"vue-router": "^4.4.5"
},
"devDependencies": {
"@iconify/json": "^2.2.256",
"@iconify/json": "^2.2.258",
"@iconify/vue": "^4.1.2",
"@rushstack/eslint-patch": "^1.10.4",
"@tsconfig/node20": "^20.1.4",
"@types/crypto-js": "^4.2.2",
"@types/lodash-es": "^4.17.12",
"@types/node": "^20.16.10",
"@unocss/eslint-config": "^0.63.3",
"@types/node": "^20.16.11",
"@unocss/eslint-config": "^0.63.4",
"@vitejs/plugin-vue": "^5.1.4",
"@vue/eslint-config-prettier": "^10.0.0",
"@vue/eslint-config-typescript": "^13.0.0",
@@ -60,8 +60,8 @@
"prettier": "^3.3.3",
"prettier-plugin-organize-imports": "^4.1.0",
"sass": "^1.79.4",
"typescript": "^5.6.2",
"unocss": "^0.63.3",
"typescript": "^5.6.3",
"unocss": "^0.63.4",
"unplugin-auto-import": "^0.18.3",
"unplugin-icons": "^0.19.3",
"unplugin-vue-components": "^0.27.4",

79
web/pnpm-lock.yaml generated
View File

@@ -51,14 +51,14 @@ importers:
specifier: ^7.0.3
version: 7.0.3(@vue/runtime-core@3.5.11)(echarts@5.5.1)(vue@3.5.11(typescript@5.6.3))
vue-i18n:
specifier: ^10.0.3
specifier: ^10.0.4
version: 10.0.4(vue@3.5.11(typescript@5.6.3))
vue-router:
specifier: ^4.4.5
version: 4.4.5(vue@3.5.11(typescript@5.6.3))
devDependencies:
'@iconify/json':
specifier: ^2.2.256
specifier: ^2.2.258
version: 2.2.258
'@iconify/vue':
specifier: ^4.1.2
@@ -76,10 +76,10 @@ importers:
specifier: ^4.17.12
version: 4.17.12
'@types/node':
specifier: ^20.16.10
specifier: ^20.16.11
version: 20.16.11
'@unocss/eslint-config':
specifier: ^0.63.3
specifier: ^0.63.4
version: 0.63.4(eslint@8.57.1)(typescript@5.6.3)
'@vitejs/plugin-vue':
specifier: ^5.1.4
@@ -124,10 +124,10 @@ importers:
specifier: ^1.79.4
version: 1.79.4
typescript:
specifier: ^5.6.2
specifier: ^5.6.3
version: 5.6.3
unocss:
specifier: ^0.63.3
specifier: ^0.63.4
version: 0.63.4(postcss@8.4.47)(rollup@4.24.0)(vite@5.4.8(@types/node@20.16.11)(sass@1.79.4)(terser@5.34.1))
unplugin-auto-import:
specifier: ^0.18.3
@@ -630,46 +630,55 @@ packages:
resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==}
cpu: [arm]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.24.0':
resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==}
cpu: [arm]
os: [linux]
libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.24.0':
resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.24.0':
resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==}
cpu: [arm64]
os: [linux]
libc: [musl]
'@rollup/rollup-linux-powerpc64le-gnu@4.24.0':
resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==}
cpu: [ppc64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-riscv64-gnu@4.24.0':
resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==}
cpu: [riscv64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-s390x-gnu@4.24.0':
resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.24.0':
resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==}
cpu: [x64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.24.0':
resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==}
cpu: [x64]
os: [linux]
libc: [musl]
'@rollup/rollup-win32-arm64-msvc@4.24.0':
resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==}
@@ -902,14 +911,14 @@ packages:
vite: ^5.0.0
vue: ^3.2.25
'@volar/language-core@2.4.5':
resolution: {integrity: sha512-F4tA0DCO5Q1F5mScHmca0umsi2ufKULAnMOVBfMsZdT4myhVl4WdKRwCaKcfOkIEuyrAVvtq1ESBdZ+rSyLVww==}
'@volar/language-core@2.4.6':
resolution: {integrity: sha512-FxUfxaB8sCqvY46YjyAAV6c3mMIq/NWQMVvJ+uS4yxr1KzOvyg61gAuOnNvgCvO4TZ7HcLExBEsWcDu4+K4E8A==}
'@volar/source-map@2.4.5':
resolution: {integrity: sha512-varwD7RaKE2J/Z+Zu6j3mNNJbNT394qIxXwdvz/4ao/vxOfyClZpSDtLKkwWmecinkOVos5+PWkWraelfMLfpw==}
'@volar/source-map@2.4.6':
resolution: {integrity: sha512-Nsh7UW2ruK+uURIPzjJgF0YRGP5CX9nQHypA2OMqdM2FKy7rh+uv3XgPnWPw30JADbKvZ5HuBzG4gSbVDYVtiw==}
'@volar/typescript@2.4.5':
resolution: {integrity: sha512-mcT1mHvLljAEtHviVcBuOyAwwMKz1ibXTi5uYtP/pf4XxoAzpdkQ+Br2IC0NPCvLCbjPZmbf3I0udndkfB1CDg==}
'@volar/typescript@2.4.6':
resolution: {integrity: sha512-NMIrA7y5OOqddL9VtngPWYmdQU03htNKFtAYidbYfWA0TOhyGVd9tfcP4TsLWQ+RBWDZCbBqsr8xzU0ZOxYTCQ==}
'@vue/compiler-core@3.5.11':
resolution: {integrity: sha512-PwAdxs7/9Hc3ieBO12tXzmTD+Ln4qhT/56S+8DvrrZ4kLDn4Z/AMUr8tXJD0axiJBS0RKIoNaR0yMuQB9v9Udg==}
@@ -2005,8 +2014,8 @@ packages:
resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==}
engines: {node: '>= 0.4'}
ofetch@1.4.0:
resolution: {integrity: sha512-MuHgsEhU6zGeX+EMh+8mSMrYTnsqJQQrpM00Q6QHMKNqQ0bKy0B43tk8tL1wg+CnsSTy1kg4Ir2T5Ig6rD+dfQ==}
ofetch@1.4.1:
resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==}
on-finished@2.3.0:
resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==}
@@ -2106,8 +2115,8 @@ packages:
typescript:
optional: true
pkg-types@1.2.0:
resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==}
pkg-types@1.2.1:
resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==}
possible-typed-array-names@1.0.0:
resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
@@ -2221,8 +2230,8 @@ packages:
scule@1.3.0:
resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==}
seemly@0.3.8:
resolution: {integrity: sha512-MW8Qs6vbzo0pHmDpFSYPna+lwpZ6Zk1ancbajw/7E8TKtHdV+1DfZZD+kKJEhG/cAoB/i+LiT+5msZOqj0DwRA==}
seemly@0.3.9:
resolution: {integrity: sha512-bMLcaEqhIViiPbaumjLN8t1y+JpD/N8SiyYOyp0i0W6RgdyLWboIsUWAbZojF//JyerxPZR5Tgda+x3Pdne75A==}
semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
@@ -3275,7 +3284,7 @@ snapshots:
dependencies:
'@iconify/utils': 2.1.33
'@unocss/core': 0.63.4
ofetch: 1.4.0
ofetch: 1.4.1
transitivePeerDependencies:
- supports-color
@@ -3304,7 +3313,7 @@ snapshots:
'@unocss/preset-web-fonts@0.63.4':
dependencies:
'@unocss/core': 0.63.4
ofetch: 1.4.0
ofetch: 1.4.1
'@unocss/preset-wind@0.63.4':
dependencies:
@@ -3357,15 +3366,15 @@ snapshots:
vite: 5.4.8(@types/node@20.16.11)(sass@1.79.4)(terser@5.34.1)
vue: 3.5.11(typescript@5.6.3)
'@volar/language-core@2.4.5':
'@volar/language-core@2.4.6':
dependencies:
'@volar/source-map': 2.4.5
'@volar/source-map': 2.4.6
'@volar/source-map@2.4.5': {}
'@volar/source-map@2.4.6': {}
'@volar/typescript@2.4.5':
'@volar/typescript@2.4.6':
dependencies:
'@volar/language-core': 2.4.5
'@volar/language-core': 2.4.6
path-browserify: 1.0.1
vscode-uri: 3.0.8
@@ -3429,7 +3438,7 @@ snapshots:
'@vue/language-core@2.1.6(typescript@5.6.3)':
dependencies:
'@volar/language-core': 2.4.5
'@volar/language-core': 2.4.6
'@vue/compiler-dom': 3.5.11
'@vue/compiler-vue2': 2.7.16
'@vue/shared': 3.5.11
@@ -4511,7 +4520,7 @@ snapshots:
local-pkg@0.5.0:
dependencies:
mlly: 1.7.2
pkg-types: 1.2.0
pkg-types: 1.2.1
locate-path@6.0.0:
dependencies:
@@ -4566,7 +4575,7 @@ snapshots:
dependencies:
acorn: 8.12.1
pathe: 1.1.2
pkg-types: 1.2.0
pkg-types: 1.2.1
ufo: 1.5.4
mockjs@1.1.0:
@@ -4599,7 +4608,7 @@ snapshots:
highlight.js: 11.10.0
lodash: 4.17.21
lodash-es: 4.17.21
seemly: 0.3.8
seemly: 0.3.9
treemate: 0.3.11
vdirs: 0.1.8(vue@3.5.11(typescript@5.6.3))
vooks: 0.2.12(vue@3.5.11(typescript@5.6.3))
@@ -4670,7 +4679,7 @@ snapshots:
define-properties: 1.2.1
es-object-atoms: 1.0.0
ofetch@1.4.0:
ofetch@1.4.1:
dependencies:
destr: 2.0.3
node-fetch-native: 1.6.4
@@ -4755,7 +4764,7 @@ snapshots:
optionalDependencies:
typescript: 5.6.3
pkg-types@1.2.0:
pkg-types@1.2.1:
dependencies:
confbox: 0.1.8
mlly: 1.7.2
@@ -4882,7 +4891,7 @@ snapshots:
scule@1.3.0: {}
seemly@0.3.8: {}
seemly@0.3.9: {}
semver@6.3.1: {}
@@ -5122,7 +5131,7 @@ snapshots:
magic-string: 0.30.11
mlly: 1.7.2
pathe: 1.1.2
pkg-types: 1.2.0
pkg-types: 1.2.1
scule: 1.3.0
strip-literal: 2.1.0
unplugin: 1.14.1
@@ -5331,7 +5340,7 @@ snapshots:
vue-tsc@2.1.6(typescript@5.6.3):
dependencies:
'@volar/typescript': 2.4.5
'@volar/typescript': 2.4.6
'@vue/language-core': 2.1.6(typescript@5.6.3)
semver: 7.6.3
typescript: 5.6.3
@@ -5352,7 +5361,7 @@ snapshots:
'@juggle/resize-observer': 3.4.0
css-render: 0.15.14
evtd: 0.2.4
seemly: 0.3.8
seemly: 0.3.9
vdirs: 0.1.8(vue@3.5.11(typescript@5.6.3))
vooks: 0.2.12(vue@3.5.11(typescript@5.6.3))
vue: 3.5.11(typescript@5.6.3)