package middleware
|
|
import (
|
"aps_crm/conf"
|
"aps_crm/constvar"
|
"aps_crm/model"
|
"aps_crm/pkg/logx"
|
"aps_crm/proto/user"
|
"context"
|
"fmt"
|
"google.golang.org/grpc"
|
"google.golang.org/grpc/credentials/insecure"
|
"time"
|
)
|
|
var (
|
userConn *grpc.ClientConn
|
)
|
|
func InitUserConn() {
|
var err error
|
userConn, err = grpc.Dial(conf.Conf.GrpcServiceAddr.Admin, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithUnaryInterceptor(HeaderInterceptor))
|
if err != nil {
|
logx.Errorf("grpc dial user service error: %v", err.Error())
|
return
|
}
|
}
|
|
func CloseUserConn() {
|
if userConn != nil {
|
userConn.Close()
|
}
|
}
|
|
var whiteList = map[string]struct{}{ //白名单地址列表
|
"/api/code/getCodeList": {},
|
"/api/data/getAllData": {},
|
"/api/serviceCollectionPlan/add": {},
|
"/api/bankAccount/list": {},
|
"/api/paymentType/list": {},
|
}
|
|
func CheckAuth(apiPath string, token string) bool {
|
if _, ok := whiteList[apiPath]; ok {
|
return true
|
}
|
cli := user.NewUserServiceClient(userConn)
|
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
defer cancel()
|
ctx = context.WithValue(ctx, "token", token)
|
rsp, err := cli.UserMenuCheck(ctx, &user.CheckRequest{
|
ApiPath: apiPath,
|
SystemType: constvar.SystemType,
|
})
|
if err != nil {
|
logx.Errorf("check auth err: %v", err)
|
return false
|
}
|
return rsp.Result
|
}
|
|
func SyncUserInfo() {
|
cli := user.NewUserServiceClient(userConn)
|
|
var users []*user.User
|
|
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
defer cancel()
|
r, err := cli.SyncUser(ctx, &user.UserRequest{Users: users})
|
if err != nil {
|
logx.Errorf("could not sync users: %v", err)
|
return
|
}
|
|
fmt.Printf("Synced: %v, Message: %s", r.List, r.Message)
|
|
for _, member := range r.List {
|
err = model.NewUserSearch(nil).FirstOrCreate(model.User{
|
UUID: member.Uuid,
|
Username: member.Username,
|
UserType: constvar.UserType(member.Usertype),
|
NickName: member.Nickname,
|
})
|
if err != nil {
|
logx.Errorf("sync user error: %v", err.Error())
|
continue
|
}
|
}
|
}
|