Files
trade/web/backend/internal/auth/bootstrap.go

33 lines
691 B
Go

package auth
import (
"log"
"trade/web/internal/store"
)
// Bootstrap 在 auth.db 没有任何 admin 时,写入默认管理员 admin/admin;
// 并强制首次登录后改密码。已存在 admin 时静默跳过。
func Bootstrap(s *store.AuthStore) error {
n, err := s.CountAdmins()
if err != nil {
return err
}
if n > 0 {
return nil
}
hash, err := HashPassword("admin")
if err != nil {
return err
}
u, err := s.CreateUser("admin", hash, store.RoleAdmin)
if err != nil {
return err
}
if err := s.SetForcePasswordChange(u.ID, true); err != nil {
return err
}
log.Printf("[bootstrap] admin created (default password), force password change enabled")
return nil
}