实现多商户履约平台基础
This commit is contained in:
@@ -14,12 +14,13 @@ import (
|
||||
)
|
||||
|
||||
type AuthService struct {
|
||||
db *gorm.DB
|
||||
jwt *jwt.Manager
|
||||
db *gorm.DB
|
||||
jwt *jwt.Manager
|
||||
tenant *TenantService
|
||||
}
|
||||
|
||||
func NewAuthService(db *gorm.DB, jm *jwt.Manager) *AuthService {
|
||||
return &AuthService{db: db, jwt: jm}
|
||||
func NewAuthService(db *gorm.DB, jm *jwt.Manager, tenant *TenantService) *AuthService {
|
||||
return &AuthService{db: db, jwt: jm, tenant: tenant}
|
||||
}
|
||||
|
||||
type LoginResult struct {
|
||||
@@ -72,6 +73,11 @@ func (s *AuthService) Register(username, password, nickname string) (*model.User
|
||||
if err := s.db.Create(user).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if s.tenant != nil {
|
||||
if err := s.tenant.EnsureSelfMember(user.ID, model.MemberRoleOperator, user.Status); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return user, nil
|
||||
}
|
||||
|
||||
@@ -87,6 +93,17 @@ func (s *AuthService) EnsureAdmin() error {
|
||||
var count int64
|
||||
s.db.Model(&model.User{}).Where("role = ?", model.RoleAdmin).Count(&count)
|
||||
if count > 0 {
|
||||
if s.tenant != nil {
|
||||
var admins []model.User
|
||||
if err := s.db.Where("role = ?", model.RoleAdmin).Find(&admins).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
for _, admin := range admins {
|
||||
if err := s.tenant.EnsureSelfMember(admin.ID, model.MemberRoleOwner, admin.Status); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
hash, err := bcrypt.GenerateFromPassword([]byte("admin123"), bcrypt.DefaultCost)
|
||||
@@ -101,7 +118,13 @@ func (s *AuthService) EnsureAdmin() error {
|
||||
Status: 1,
|
||||
InviteCode: "ADMIN001",
|
||||
}
|
||||
return s.db.Create(admin).Error
|
||||
if err := s.db.Create(admin).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if s.tenant != nil {
|
||||
return s.tenant.EnsureSelfMember(admin.ID, model.MemberRoleOwner, admin.Status)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func generateInviteCode() string {
|
||||
|
||||
Reference in New Issue
Block a user