41 lines
992 B
Go
41 lines
992 B
Go
|
package auth
|
|||
|
|
|||
|
import (
|
|||
|
"backend/internal/svc"
|
|||
|
"backend/internal/types"
|
|||
|
"backend/pkg/permission/domain/entity"
|
|||
|
"backend/pkg/permission/domain/token"
|
|||
|
"context"
|
|||
|
"time"
|
|||
|
)
|
|||
|
|
|||
|
// 生成 Token
|
|||
|
func generateToken(svc *svc.ServiceContext, ctx context.Context, req *types.LoginReq, uid string) (entity.TokenResp, error) {
|
|||
|
// scope role 要修改,refresh tl
|
|||
|
role := "user"
|
|||
|
|
|||
|
tk, err := svc.TokenUC.NewToken(ctx, entity.AuthorizationReq{
|
|||
|
GrantType: token.ClientCredentials.ToString(),
|
|||
|
DeviceID: uid, // TODO 沒傳暫時先用UID 替代
|
|||
|
Scope: "gateway",
|
|||
|
IsRefreshToken: true,
|
|||
|
Expires: time.Now().UTC().Add(svc.Config.Token.AccessTokenExpiry).Unix(),
|
|||
|
Data: map[string]string{
|
|||
|
"uid": uid,
|
|||
|
},
|
|||
|
Role: role,
|
|||
|
Account: req.LoginID,
|
|||
|
})
|
|||
|
if err != nil {
|
|||
|
return entity.TokenResp{}, err
|
|||
|
}
|
|||
|
|
|||
|
return entity.TokenResp{
|
|||
|
AccessToken: tk.AccessToken,
|
|||
|
TokenType: tk.TokenType,
|
|||
|
ExpiresIn: tk.ExpiresIn,
|
|||
|
RefreshToken: tk.RefreshToken,
|
|||
|
}, nil
|
|||
|
|
|||
|
}
|