mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 07:57:21 +08:00
feat: 数据库用户管理2
This commit is contained in:
@@ -9,6 +9,7 @@ type DatabaseStatus string
|
||||
type Database struct {
|
||||
Name string `json:"name"`
|
||||
Server string `json:"server"`
|
||||
ServerID uint `json:"server_id"`
|
||||
Encoding string `json:"encoding"`
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ func (r databaseRepo) List(page, limit uint) ([]*biz.Database, int64, error) {
|
||||
database = append(database, &biz.Database{
|
||||
Name: item.Name,
|
||||
Server: server.Name,
|
||||
ServerID: server.ID,
|
||||
Encoding: item.CharSet,
|
||||
})
|
||||
}
|
||||
@@ -48,6 +49,7 @@ func (r databaseRepo) List(page, limit uint) ([]*biz.Database, int64, error) {
|
||||
database = append(database, &biz.Database{
|
||||
Name: item.Name,
|
||||
Server: server.Name,
|
||||
ServerID: server.ID,
|
||||
Encoding: item.Encoding,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package data
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"slices"
|
||||
|
||||
"github.com/samber/do/v2"
|
||||
@@ -121,14 +122,16 @@ func (r databaseServerRepo) Sync(id uint) error {
|
||||
for user := range slices.Values(allUsers) {
|
||||
if !slices.ContainsFunc(users, func(a *biz.DatabaseUser) bool {
|
||||
return a.Username == user.User && a.Host == user.Host
|
||||
}) {
|
||||
}) && !slices.Contains([]string{"root", "mysql.sys", "mysql.session", "mysql.infoschema"}, user.User) {
|
||||
newUser := &biz.DatabaseUser{
|
||||
ServerID: id,
|
||||
Username: user.User,
|
||||
Host: user.Host,
|
||||
Remark: fmt.Sprintf("sync from server %s", server.Name),
|
||||
}
|
||||
app.Orm.Create(newUser)
|
||||
if err = app.Orm.Create(newUser).Error; err != nil {
|
||||
app.Logger.Warn("sync database user failed", slog.Any("err", err))
|
||||
}
|
||||
}
|
||||
}
|
||||
case biz.DatabaseTypePostgresql:
|
||||
@@ -143,7 +146,7 @@ func (r databaseServerRepo) Sync(id uint) error {
|
||||
for user := range slices.Values(allUsers) {
|
||||
if !slices.ContainsFunc(users, func(a *biz.DatabaseUser) bool {
|
||||
return a.Username == user.Role
|
||||
}) {
|
||||
}) && !slices.Contains([]string{"postgres"}, user.Role) {
|
||||
newUser := &biz.DatabaseUser{
|
||||
ServerID: id,
|
||||
Username: user.Role,
|
||||
|
||||
@@ -66,7 +66,7 @@ func Http(r chi.Router) {
|
||||
database := service.NewDatabaseService()
|
||||
r.Get("/", database.List)
|
||||
r.Post("/", database.Create)
|
||||
r.Delete("/{id}", database.Delete)
|
||||
r.Delete("/", database.Delete)
|
||||
})
|
||||
|
||||
r.Route("/databaseServer", func(r chi.Router) {
|
||||
@@ -75,7 +75,7 @@ func Http(r chi.Router) {
|
||||
r.Post("/", server.Create)
|
||||
r.Put("/{id}", server.Update)
|
||||
r.Delete("/{id}", server.Delete)
|
||||
r.Delete("/{id}/sync", server.Sync)
|
||||
r.Post("/{id}/sync", server.Sync)
|
||||
})
|
||||
|
||||
r.Route("/databaseUser", func(r chi.Router) {
|
||||
|
||||
Reference in New Issue
Block a user