nginx-ui/internal/cert/register.go

68 lines
1.2 KiB
Go

package cert
import (
"context"
"github.com/0xJacky/Nginx-UI/model"
"github.com/0xJacky/Nginx-UI/query"
"github.com/0xJacky/Nginx-UI/settings"
"github.com/pkg/errors"
"github.com/uozi-tech/cosy/logger"
"gorm.io/gorm"
)
// InitRegister init the default user for acme
func InitRegister(ctx context.Context) {
email := settings.CertSettings.Email
if settings.CertSettings.Email == "" {
return
}
caDir := settings.CertSettings.GetCADir()
u := query.AcmeUser
_, err := u.Where(u.Email.Eq(email),
u.CADir.Eq(caDir)).First()
if err == nil {
return
}
if !errors.Is(err, gorm.ErrRecordNotFound) {
logger.Error(err)
return
}
// Create a new user
user := &model.AcmeUser{
Name: "System Initial User",
Email: email,
CADir: caDir,
}
err = user.Register()
if err != nil {
logger.Error(err)
return
}
err = u.Create(user)
if err != nil {
logger.Error(err)
return
}
logger.Info("ACME Default User registered")
}
func GetDefaultACMEUser() (user *model.AcmeUser, err error) {
u := query.AcmeUser
user, err = u.Where(u.Email.Eq(settings.CertSettings.Email),
u.CADir.Eq(settings.CertSettings.GetCADir())).First()
if err != nil {
err = errors.Wrap(err, "get default user error")
return
}
return
}