63 lines
1.3 KiB
Go
63 lines
1.3 KiB
Go
package module
|
||
|
||
import (
|
||
"context"
|
||
"ssq-desk/internal/api"
|
||
)
|
||
|
||
// AuthModule 授权码模块
|
||
type AuthModule struct {
|
||
BaseModule
|
||
authAPI *api.AuthAPI
|
||
}
|
||
|
||
// NewAuthModule 创建授权码模块
|
||
func NewAuthModule() (*AuthModule, error) {
|
||
// 延迟初始化,等到 Init() 方法调用时再创建 API(此时数据库已初始化)
|
||
return &AuthModule{
|
||
BaseModule: BaseModule{
|
||
name: "auth",
|
||
api: nil, // 延迟初始化
|
||
},
|
||
authAPI: nil, // 延迟初始化
|
||
}, nil
|
||
}
|
||
|
||
// Init 初始化模块
|
||
func (m *AuthModule) Init(ctx context.Context) error {
|
||
if m.authAPI == nil {
|
||
authAPI, err := api.NewAuthAPI()
|
||
if err != nil {
|
||
return err
|
||
}
|
||
m.authAPI = authAPI
|
||
m.api = authAPI
|
||
}
|
||
return nil
|
||
}
|
||
|
||
// Start 启动模块(检查授权状态)
|
||
func (m *AuthModule) Start(ctx context.Context) error {
|
||
if m.authAPI == nil {
|
||
return m.Init(ctx)
|
||
}
|
||
|
||
status, err := m.authAPI.GetAuthStatus()
|
||
if err == nil {
|
||
if data, ok := status["data"].(map[string]interface{}); ok && data != nil {
|
||
if isActivated, ok := data["is_activated"].(bool); ok && !isActivated {
|
||
println("授权未激活,部分功能可能受限")
|
||
} else {
|
||
println("授权验证通过")
|
||
}
|
||
}
|
||
}
|
||
|
||
return nil
|
||
}
|
||
|
||
// AuthAPI 返回 Auth API(类型安全)
|
||
func (m *AuthModule) AuthAPI() *api.AuthAPI {
|
||
return m.authAPI
|
||
}
|