58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"flag"
|
|
"fmt"
|
|
"log"
|
|
"time"
|
|
|
|
_ "github.com/Wei-Shaw/sub2api/ent/runtime"
|
|
"github.com/Wei-Shaw/sub2api/internal/config"
|
|
"github.com/Wei-Shaw/sub2api/internal/repository"
|
|
"github.com/Wei-Shaw/sub2api/internal/service"
|
|
)
|
|
|
|
func main() {
|
|
email := flag.String("email", "", "Admin email to issue a JWT for (defaults to first active admin)")
|
|
flag.Parse()
|
|
|
|
cfg, err := config.Load()
|
|
if err != nil {
|
|
log.Fatalf("failed to load config: %v", err)
|
|
}
|
|
|
|
client, sqlDB, err := repository.InitEnt(cfg)
|
|
if err != nil {
|
|
log.Fatalf("failed to init db: %v", err)
|
|
}
|
|
defer func() {
|
|
if err := client.Close(); err != nil {
|
|
log.Printf("failed to close db: %v", err)
|
|
}
|
|
}()
|
|
|
|
userRepo := repository.NewUserRepository(client, sqlDB)
|
|
authService := service.NewAuthService(userRepo, nil, cfg, nil, nil, nil, nil, nil)
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
|
defer cancel()
|
|
|
|
var user *service.User
|
|
if *email != "" {
|
|
user, err = userRepo.GetByEmail(ctx, *email)
|
|
} else {
|
|
user, err = userRepo.GetFirstAdmin(ctx)
|
|
}
|
|
if err != nil {
|
|
log.Fatalf("failed to resolve admin user: %v", err)
|
|
}
|
|
|
|
token, err := authService.GenerateToken(user)
|
|
if err != nil {
|
|
log.Fatalf("failed to generate token: %v", err)
|
|
}
|
|
|
|
fmt.Printf("ADMIN_EMAIL=%s\nADMIN_USER_ID=%d\nJWT=%s\n", user.Email, user.ID, token)
|
|
}
|