| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package setup
- import (
- "github.com/Jinnrry/pmail/config"
- "github.com/Jinnrry/pmail/db"
- "github.com/Jinnrry/pmail/models"
- "github.com/Jinnrry/pmail/utils/array"
- "github.com/Jinnrry/pmail/utils/context"
- "github.com/Jinnrry/pmail/utils/errors"
- "github.com/Jinnrry/pmail/utils/password"
- )
- func GetDatabaseSettings(ctx *context.Context) (string, string, error) {
- configData, err := config.ReadConfig()
- if err != nil {
- return "", "", errors.Wrap(err)
- }
- if configData.DbType == "" && configData.DbDSN == "" {
- return config.DBTypeSQLite, config.ROOT_PATH + "./config/pmail.db", nil
- }
- return configData.DbType, configData.DbDSN, nil
- }
- func GetAdminPassword(ctx *context.Context) (string, error) {
- users := []*models.User{}
- err := db.Instance.Find(&users)
- if err != nil {
- return "", errors.Wrap(err)
- }
- if len(users) > 0 {
- return users[0].Account, nil
- }
- return "", nil
- }
- func SetAdminPassword(ctx *context.Context, account, pwd string) error {
- encodePwd := password.Encode(pwd)
- var user models.User = models.User{
- Account: account,
- Name: "admin",
- Password: encodePwd,
- IsAdmin: 1,
- }
- _, err := db.Instance.Insert(&user)
- if err != nil {
- return errors.Wrap(err)
- }
- return nil
- }
- func SetDatabaseSettings(ctx *context.Context, dbType, dbDSN string) error {
- configData, err := config.ReadConfig()
- if err != nil {
- return errors.Wrap(err)
- }
- if !array.InArray(dbType, config.DBTypes) {
- return errors.New("dbtype error")
- }
- if dbDSN == "" {
- return errors.New("DSN error")
- }
- configData.DbType = dbType
- configData.DbDSN = dbDSN
- err = config.WriteConfig(configData)
- if err != nil {
- return errors.Wrap(err)
- }
- config.Init()
- // 检查数据库是否能正确连接
- err = db.Init("")
- if err != nil {
- return errors.Wrap(err)
- }
- return nil
- }
|