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 } } }