Compare commits
12 Commits
Author | SHA1 | Date |
---|---|---|
|
97f0d9bbb3 | |
|
8a746d9b40 | |
|
74d095bcbc | |
|
23d0ce66e9 | |
|
d7190ebe79 | |
|
dbe6b16dce | |
|
dbdc777ed4 | |
|
eb85982ef1 | |
|
cccad97512 | |
|
547b3b06dd | |
|
e8c5616206 | |
|
0e7f0a2b68 |
1
Makefile
1
Makefile
|
@ -8,6 +8,7 @@ LDFLAGS := -s -w
|
||||||
VERSION="v1.0.1"
|
VERSION="v1.0.1"
|
||||||
DOCKER_REPO="reg.wang/app-cloudep-permission-service"
|
DOCKER_REPO="reg.wang/app-cloudep-permission-service"
|
||||||
|
|
||||||
|
|
||||||
.PHONY: test
|
.PHONY: test
|
||||||
test: # 進行測試
|
test: # 進行測試
|
||||||
go test -v --cover ./...
|
go test -v --cover ./...
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# BUILDER #
|
# BUILDER #
|
||||||
###########
|
###########
|
||||||
|
|
||||||
FROM golang:1.24.0 AS builder
|
FROM golang:1.24.0 as builder
|
||||||
|
|
||||||
ARG VERSION
|
ARG VERSION
|
||||||
ARG BUILT
|
ARG BUILT
|
||||||
|
|
|
@ -121,6 +121,15 @@ message Tokens{
|
||||||
repeated TokenResp token = 1;
|
repeated TokenResp token = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message GetSystemClaimReq{
|
||||||
|
string access_token=1;
|
||||||
|
bool is_expired=2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetSystemClaimResp {
|
||||||
|
map<string,string> data = 1;
|
||||||
|
}
|
||||||
|
|
||||||
// 跟 Token 相關的大小事,這次只回應錯誤,以及結果,不統一規範
|
// 跟 Token 相關的大小事,這次只回應錯誤,以及結果,不統一規範
|
||||||
// 錯誤碼應該在 Biz GW 在做回應,另外我這邊取名字比較通用,
|
// 錯誤碼應該在 Biz GW 在做回應,另外我這邊取名字比較通用,
|
||||||
// access_token -> token , refresh_token -> one_time_token
|
// access_token -> token , refresh_token -> one_time_token
|
||||||
|
@ -141,6 +150,8 @@ service TokenService {
|
||||||
rpc GetUserTokensByDeviceID(DoTokenByDeviceIDReq) returns(Tokens);
|
rpc GetUserTokensByDeviceID(DoTokenByDeviceIDReq) returns(Tokens);
|
||||||
// GetUserTokensByUID 取得目前所對應的 UID 所存在的 Tokens
|
// GetUserTokensByUID 取得目前所對應的 UID 所存在的 Tokens
|
||||||
rpc GetUserTokensByUID(QueryTokenByUIDReq) returns(Tokens);
|
rpc GetUserTokensByUID(QueryTokenByUIDReq) returns(Tokens);
|
||||||
|
// 取得 Claim
|
||||||
|
rpc GetSystemClaimByAccessToken(GetSystemClaimReq) returns(GetSystemClaimResp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
package tokenservicelogic
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"code.30cm.net/digimon/app-cloudep-permission-server/gen_result/pb/permission"
|
||||||
|
"code.30cm.net/digimon/app-cloudep-permission-server/internal/svc"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GetSystemClaimByAccessTokenLogic struct {
|
||||||
|
ctx context.Context
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
logx.Logger
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewGetSystemClaimByAccessTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetSystemClaimByAccessTokenLogic {
|
||||||
|
return &GetSystemClaimByAccessTokenLogic{
|
||||||
|
ctx: ctx,
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
Logger: logx.WithContext(ctx),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSystemClaimByAccessToken 取得 Claim
|
||||||
|
func (l *GetSystemClaimByAccessTokenLogic) GetSystemClaimByAccessToken(in *permission.GetSystemClaimReq) (*permission.GetSystemClaimResp, error) {
|
||||||
|
claim, err := l.svcCtx.TokenUseCase.ParseSystemClaimsByAccessToken(in.GetAccessToken(), l.svcCtx.Config.Token.Secret, in.GetIsExpired())
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &permission.GetSystemClaimResp{
|
||||||
|
Data: claim,
|
||||||
|
}, nil
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
// Code generated by goctl. DO NOT EDIT.
|
||||||
|
// goctl 1.8.1
|
||||||
|
// Source: permission.proto
|
||||||
|
|
||||||
|
package server
|
||||||
|
|
||||||
|
import (
|
||||||
|
"code.30cm.net/digimon/app-cloudep-permission-server/gen_result/pb/permission"
|
||||||
|
"code.30cm.net/digimon/app-cloudep-permission-server/internal/logic/permissionservice"
|
||||||
|
"code.30cm.net/digimon/app-cloudep-permission-server/internal/svc"
|
||||||
|
)
|
||||||
|
|
||||||
|
type PermissionServiceServer struct {
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
permission.UnimplementedPermissionServiceServer
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewPermissionServiceServer(svcCtx *svc.ServiceContext) *PermissionServiceServer {
|
||||||
|
return &PermissionServiceServer{
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
// Code generated by goctl. DO NOT EDIT.
|
// Code generated by goctl. DO NOT EDIT.
|
||||||
// goctl 1.7.3
|
// goctl 1.8.1
|
||||||
// Source: permission.proto
|
// Source: permission.proto
|
||||||
|
|
||||||
package server
|
package server
|
||||||
|
@ -70,3 +70,9 @@ func (s *TokenServiceServer) GetUserTokensByUID(ctx context.Context, in *permiss
|
||||||
l := tokenservicelogic.NewGetUserTokensByUIDLogic(ctx, s.svcCtx)
|
l := tokenservicelogic.NewGetUserTokensByUIDLogic(ctx, s.svcCtx)
|
||||||
return l.GetUserTokensByUID(in)
|
return l.GetUserTokensByUID(in)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 取得 Claim
|
||||||
|
func (s *TokenServiceServer) GetSystemClaimByAccessToken(ctx context.Context, in *permission.GetSystemClaimReq) (*permission.GetSystemClaimResp, error) {
|
||||||
|
l := tokenservicelogic.NewGetSystemClaimByAccessTokenLogic(ctx, s.svcCtx)
|
||||||
|
return l.GetSystemClaimByAccessToken(in)
|
||||||
|
}
|
||||||
|
|
|
@ -15,6 +15,10 @@ func (use *additional) GetAll() map[string]string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (use *additional) Set(key token.Additional, val string) {
|
func (use *additional) Set(key token.Additional, val string) {
|
||||||
|
if use.additional == nil {
|
||||||
|
use.additional = make(map[string]string)
|
||||||
|
}
|
||||||
|
|
||||||
use.additional[key.String()] = val
|
use.additional[key.String()] = val
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -452,6 +452,11 @@ func (use *TokenUseCase) newToken(ctx context.Context, req *usecase.GenerateToke
|
||||||
}
|
}
|
||||||
// 故意 data 裡面不會有那些已經有的欄位資訊
|
// 故意 data 裡面不會有那些已經有的欄位資訊
|
||||||
data := NewAdditional(req.Data)
|
data := NewAdditional(req.Data)
|
||||||
|
initData := make(map[string]string, 0)
|
||||||
|
for k, v := range req.Data {
|
||||||
|
initData[k] = v
|
||||||
|
}
|
||||||
|
|
||||||
data.Set(dt.ID, token.ID)
|
data.Set(dt.ID, token.ID)
|
||||||
data.Set(dt.Role, req.Role)
|
data.Set(dt.Role, req.Role)
|
||||||
data.Set(dt.Scope, req.Scope)
|
data.Set(dt.Scope, req.Scope)
|
||||||
|
|
Loading…
Reference in New Issue