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

feat: 设置页面初步完善及前端import lint

This commit is contained in:
耗子
2024-09-30 19:00:26 +08:00
parent 67055a5aac
commit dc0174c64e
116 changed files with 1380 additions and 237 deletions

View File

@@ -1,6 +1,7 @@
package biz
import (
"context"
"time"
"github.com/TheTNB/panel/internal/http/request"
@@ -34,6 +35,6 @@ type SettingRepo interface {
Get(key SettingKey, defaultValue ...string) (string, error)
Set(key SettingKey, value string) error
Delete(key SettingKey) error
GetPanelSetting() (*request.PanelSetting, error)
GetPanelSetting(ctx context.Context) (*request.PanelSetting, error)
UpdatePanelSetting(setting *request.PanelSetting) error
}

View File

@@ -1,13 +1,17 @@
package data
import (
"context"
"errors"
"path/filepath"
"github.com/spf13/cast"
"gorm.io/gorm"
"github.com/TheTNB/panel/internal/app"
"github.com/TheTNB/panel/internal/biz"
"github.com/TheTNB/panel/internal/http/request"
"github.com/TheTNB/panel/pkg/io"
)
type settingRepo struct{}
@@ -50,16 +54,50 @@ func (r *settingRepo) Delete(key biz.SettingKey) error {
return nil
}
func (r *settingRepo) GetPanelSetting() (*request.PanelSetting, error) {
setting := new(biz.Setting)
if err := app.Orm.Where("key = ?", biz.SettingKeyName).First(setting).Error; err != nil {
func (r *settingRepo) GetPanelSetting(ctx context.Context) (*request.PanelSetting, error) {
name := new(biz.Setting)
if err := app.Orm.Where("key = ?", biz.SettingKeyName).First(name).Error; err != nil {
return nil, err
}
websitePath := new(biz.Setting)
if err := app.Orm.Where("key = ?", biz.SettingKeyWebsitePath).First(websitePath).Error; err != nil {
return nil, err
}
backupPath := new(biz.Setting)
if err := app.Orm.Where("key = ?", biz.SettingKeyBackupPath).First(backupPath).Error; err != nil {
return nil, err
}
// TODO fix
userID := cast.ToUint(ctx.Value("user_id"))
if userID == 0 {
return nil, errors.New("获取用户 ID 失败")
}
user := new(biz.User)
if err := app.Orm.Where("id = ?", userID).First(user).Error; err != nil {
return nil, err
}
cert, err := io.Read(filepath.Join(app.Root, "panel/storage/cert.pem"))
if err != nil {
return nil, err
}
key, err := io.Read(filepath.Join(app.Root, "panel/storage/cert.key"))
if err != nil {
return nil, err
}
return &request.PanelSetting{
Name: setting.Value,
Name: name.Value,
Locale: app.Conf.String("app.locale"),
Entrance: app.Conf.String("http.entrance"),
WebsitePath: websitePath.Value,
BackupPath: backupPath.Value,
Username: user.Username,
Email: user.Email,
Port: app.Conf.Int("http.port"),
HTTPS: app.Conf.Bool("http.tls"),
Cert: cert,
Key: key,
}, nil
}
@@ -67,8 +105,14 @@ func (r *settingRepo) UpdatePanelSetting(setting *request.PanelSetting) error {
if err := r.Set(biz.SettingKeyName, setting.Name); err != nil {
return err
}
if err := r.Set(biz.SettingKeyWebsitePath, setting.WebsitePath); err != nil {
return err
}
if err := r.Set(biz.SettingKeyBackupPath, setting.BackupPath); err != nil {
return err
}
// TODO fix
// TODO fix other settings
return nil
}

View File

@@ -2,14 +2,14 @@ package request
type PanelSetting struct {
Name string `json:"name"`
Language string `json:"language"`
Locale string `json:"locale"`
Entrance string `json:"entrance"`
WebsitePath string `json:"website_path"`
BackupPath string `json:"backup_path"`
Username string `json:"username"`
Password string `json:"password"`
Email string `json:"email"`
Port string `json:"port"`
Port int `json:"port"`
HTTPS bool `json:"https"`
Cert string `json:"cert"`
Key string `json:"key"`

View File

@@ -19,7 +19,7 @@ func NewSettingService() *SettingService {
}
func (s *SettingService) Get(w http.ResponseWriter, r *http.Request) {
setting, err := s.settingRepo.GetPanelSetting()
setting, err := s.settingRepo.GetPanelSetting(r.Context())
if err != nil {
Error(w, http.StatusInternalServerError, err.Error())
return