|
|
@@ -31,7 +31,9 @@ func Authentication() gateway.Handler {
|
|
|
requestBuilder.Post(&gateway.PostRequest{
|
|
|
Url: config.GetGatewayConfig().ServicesConfig.UMBaseUrl + "/utm/api/v1/checkToken",
|
|
|
Body: map[string]any{
|
|
|
- "token": token,
|
|
|
+ "token": token,
|
|
|
+ "resource": c.FullPath(),
|
|
|
+ "action": c.Request.Method,
|
|
|
},
|
|
|
}).ResponseSuccessCallback(func(c *gateway.RequestBuilderContext) {
|
|
|
userID, ok := c.GetResultMapValue("userId").(string)
|
|
|
@@ -44,88 +46,6 @@ func Authentication() gateway.Handler {
|
|
|
}
|
|
|
}).Request()
|
|
|
|
|
|
- currentTenant, err := ngumInner.GetUserCurrentTenant(umCheckResult.UserID)
|
|
|
- if err != nil {
|
|
|
- fslog.Error(err)
|
|
|
- respFunc(c, http.StatusUnauthorized, map[string]any{
|
|
|
- "code": ErrGetCurOrg.Code(),
|
|
|
- "accessToken": "",
|
|
|
- }, ErrGetCurOrg)
|
|
|
- c.Abort()
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- tangentSimpleUserInfo := new(mbum_resp.TangentUserProfileInfo)
|
|
|
- tenantStatus := new(ngtm_resp.TenantStatus)
|
|
|
- if currentTenant.ID != "" {
|
|
|
- tenantStatus, err = ngtmInner.GetTenantStatus(currentTenant.ID)
|
|
|
- if err != nil {
|
|
|
- fslog.Error(err)
|
|
|
- respFunc(c, http.StatusUnauthorized, map[string]any{
|
|
|
- "code": ErrGetCurOrg.Code(),
|
|
|
- "accessToken": "",
|
|
|
- }, ErrGetCurOrgUserInfo)
|
|
|
- c.Abort()
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- tangentSimpleUserInfo, err = ngumInner.GetTenantUserProfileSimpleByID(currentTenant.ID, umCheckResult.UserID)
|
|
|
- if err != nil {
|
|
|
- fslog.Error(err)
|
|
|
- respFunc(c, http.StatusUnauthorized, map[string]any{
|
|
|
- "code": ErrGetCurOrg.Code(),
|
|
|
- "accessToken": "",
|
|
|
- }, ErrGetCurOrgUserInfo)
|
|
|
- c.Abort()
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 2.使用新的uas 直接根据用户id和访问资源信息判断是否有权限。
|
|
|
- authInfo, err := uasV1.Authentication(&uasV1Req.AuthenticationJsonBody{
|
|
|
- TenantID: currentTenant.ID,
|
|
|
- UserID: umCheckResult.UserID,
|
|
|
- Namespace: global.Namespace,
|
|
|
- Resource: c.FullPath(),
|
|
|
- Action: c.Request.Method,
|
|
|
- IsExpireStatus: tenantStatus.IsExpireStatus,
|
|
|
- })
|
|
|
- if err != nil {
|
|
|
- fslog.Error(err)
|
|
|
- respFunc(c, http.StatusUnauthorized, map[string]any{
|
|
|
- "code": ErrAuth.Code(),
|
|
|
- "accessToken": "",
|
|
|
- }, ErrAuth)
|
|
|
- c.Abort()
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- if authInfo != nil && !authInfo.Pass {
|
|
|
- fslog.Error(fmt.Errorf("path:%s,method:%s", c.Request.URL.Path, c.Request.Method))
|
|
|
- respFunc(c, http.StatusUnauthorized, map[string]any{
|
|
|
- "code": ErrNoPermission.Code(),
|
|
|
- "accessToken": "",
|
|
|
- }, ErrNoPermission)
|
|
|
- c.Abort()
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- // 组合角色
|
|
|
- roles := make([]RoleInfo, 0)
|
|
|
- for _, sysRole := range authInfo.SysRoles {
|
|
|
- roles = append(roles, RoleInfo{
|
|
|
- ID: sysRole.ID,
|
|
|
- Name: sysRole.Name,
|
|
|
- })
|
|
|
-
|
|
|
- }
|
|
|
- for _, tangentRole := range authInfo.TenantRoles {
|
|
|
- roles = append(roles, RoleInfo{
|
|
|
- ID: tangentRole.ID,
|
|
|
- Name: tangentRole.Name,
|
|
|
- })
|
|
|
- }
|
|
|
-
|
|
|
c.SetUserInfo(&UserInfoWithRoles{
|
|
|
ID: umCheckResult.UserID,
|
|
|
UserName: umCheckResult.UserName,
|