github.com/polarismesh/polaris@v1.17.8/apiserver/httpserver/docs/auth_apidoc.go (about)

     1  /**
     2   * Tencent is pleased to support the open source community by making Polaris available.
     3   *
     4   * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
     5   *
     6   * Licensed under the BSD 3-Clause License (the "License");
     7   * you may not use this file except in compliance with the License.
     8   * You may obtain a copy of the License at
     9   *
    10   * https://opensource.org/licenses/BSD-3-Clause
    11   *
    12   * Unless required by applicable law or agreed to in writing, software distributed
    13   * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
    14   * CONDITIONS OF ANY KIND, either express or implied. See the License for the
    15   * specific language governing permissions and limitations under the License.
    16   */
    17  
    18  package docs
    19  
    20  import (
    21  	"github.com/emicklei/go-restful/v3"
    22  	restfulspec "github.com/polarismesh/go-restful-openapi/v2"
    23  	apisecurity "github.com/polarismesh/specification/source/go/api/v1/security"
    24  )
    25  
    26  var (
    27  	authApiTags      = []string{"AuthRule"}
    28  	usersApiTags     = []string{"Users"}
    29  	userGroupApiTags = []string{"Users"}
    30  )
    31  
    32  func EnrichAuthStatusApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
    33  	return r.
    34  		Doc("查询鉴权开关信息").
    35  		Metadata(restfulspec.KeyOpenAPITags, authApiTags).
    36  		Returns(0, "", struct {
    37  			BaseResponse
    38  			OptionSwitch struct {
    39  				Options struct {
    40  					ClientOen   bool `json:"clientOen"`
    41  					ConsoleOpen bool `json:"consoleOpen"`
    42  					Auth        bool `json:"auth"`
    43  				} `json:"options"`
    44  			} `json:"optionSwitch,omitempty"`
    45  		}{})
    46  }
    47  
    48  func EnrichCreateStrategyApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
    49  	return r.
    50  		Doc("创建鉴权策略").
    51  		Metadata(restfulspec.KeyOpenAPITags, authApiTags).
    52  		Reads(apisecurity.AuthStrategy{}, "create auth strategy").
    53  		Returns(0, "", struct {
    54  			BaseResponse
    55  			AuthStrategy apisecurity.AuthStrategy `json:"authStrategy"`
    56  		}{})
    57  }
    58  
    59  func EnrichUpdateStrategiesApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
    60  	return r.
    61  		Doc("更新鉴权策略").
    62  		Metadata(restfulspec.KeyOpenAPITags, authApiTags).
    63  		Reads([]apisecurity.AuthStrategy{}, "update auth strategy").
    64  		Returns(0, "", struct {
    65  			BatchWriteResponse
    66  			Responses []struct {
    67  				BaseResponse
    68  				AuthStrategy apisecurity.AuthStrategy `json:"authStrategy"`
    69  			} `json:"responses"`
    70  		}{})
    71  }
    72  
    73  func EnrichGetStrategiesApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
    74  	return r.
    75  		Doc("查询鉴权策略列表").
    76  		Metadata(restfulspec.KeyOpenAPITags, authApiTags).
    77  		Param(restful.QueryParameter("id", "策略ID").DataType(typeNameString).
    78  			Required(false)).
    79  		Param(restful.QueryParameter("name", "策略名称, 当前仅提供全模糊搜索").DataType(typeNameString).
    80  			Required(false)).
    81  		Param(restful.QueryParameter("default", "“0” 查询自定义策略;“1” 查询默认策略;"+
    82  			"不填则为查询(默认+自定义)鉴权策略").DataType(typeNameString).Required(false)).
    83  		Param(restful.QueryParameter("res_id", "资源ID").DataType(typeNameString).
    84  			Required(false)).
    85  		Param(restful.QueryParameter("res_type", "资源类型, namespace、service、config_group").
    86  			DataType(typeNameString).Required(false)).
    87  		Param(restful.QueryParameter("principal_id", "成员ID").DataType(typeNameString).
    88  			Required(false)).
    89  		Param(restful.QueryParameter("principal_type", "成员类型, user、group").
    90  			DataType(typeNameString).Required(false)).
    91  		Param(restful.QueryParameter("show_detail", "是否显示策略详细").DataType("boolean").
    92  			Required(false)).
    93  		Param(restful.QueryParameter("offset", "查询偏移量, 默认为0").DataType(typeNameInteger).
    94  			Required(false).DefaultValue("0")).
    95  		Param(restful.QueryParameter("limit", "本次查询条数, 最大为100").DataType(typeNameInteger).
    96  			Required(false)).
    97  		Returns(0, "", struct {
    98  			BatchQueryResponse
    99  			AuthStrategies []apisecurity.AuthStrategy `json:"authStrategies,omitempty"`
   100  		}{})
   101  }
   102  
   103  func EnrichGetPrincipalResourcesApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   104  	return r.
   105  		Doc("获取某个用户/用户组下可操作的资源列表").
   106  		Metadata(restfulspec.KeyOpenAPITags, authApiTags).
   107  		Param(restful.QueryParameter("principal_id", "策略ID").
   108  			DataType(typeNameString).
   109  			Required(true)).
   110  		Param(restful.QueryParameter("principal_type", "Principal类别,user/group").
   111  			DataType(typeNameString).
   112  			Required(true)).
   113  		Returns(0, "", struct {
   114  			BaseResponse
   115  			Resources apisecurity.StrategyResources `json:"resources,omitempty"`
   116  		}{})
   117  }
   118  
   119  func EnrichGetStrategyApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   120  	return r.
   121  		Doc("获取鉴权策略详细").
   122  		Metadata(restfulspec.KeyOpenAPITags, authApiTags).
   123  		Param(restful.QueryParameter("id", "策略ID").DataType(typeNameString).Required(true)).
   124  		Returns(0, "", struct {
   125  			BaseResponse
   126  			AuthStrategy apisecurity.AuthStrategy `json:"authStrategy"`
   127  		}{})
   128  }
   129  
   130  func EnrichDeleteStrategiesApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   131  	return r.
   132  		Doc("批量删除鉴权策略").
   133  		Metadata(restfulspec.KeyOpenAPITags, authApiTags).
   134  		Reads([]apisecurity.AuthStrategy{}, "delete auth strategy").
   135  		Returns(0, "", struct {
   136  			BatchWriteResponse
   137  			Responses []struct {
   138  				BaseResponse
   139  				AuthStrategy apisecurity.AuthStrategy `json:"authStrategy"`
   140  			} `json:"responses"`
   141  		}{})
   142  }
   143  
   144  func EnrichLoginApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   145  	return r.
   146  		Doc("用户登录").
   147  		Metadata(restfulspec.KeyOpenAPITags, usersApiTags).
   148  		Reads(apisecurity.LoginRequest{}, "登陆请求").
   149  		Returns(0, "", struct {
   150  			BaseResponse
   151  			LoginResponse *apisecurity.LoginResponse `json:"loginResponse"`
   152  		}{})
   153  }
   154  
   155  func EnrichGetUsersApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   156  	return r.
   157  		Doc("根据相关条件对用户列表进行查询").
   158  		Metadata(restfulspec.KeyOpenAPITags, usersApiTags).
   159  		Param(restful.QueryParameter("id", "用户ID").
   160  			DataType(typeNameString).
   161  			Required(false)).
   162  		Param(restful.QueryParameter("name", "用户名称, 当前仅提供全模糊搜索").
   163  			DataType(typeNameString).
   164  			Required(false)).
   165  		Param(restful.QueryParameter("source", "用户来源").
   166  			DataType(typeNameString).Required(false)).
   167  		Param(restful.QueryParameter("group_id", "用户组ID, 用于查询某个用户组下用户列表").
   168  			DataType(typeNameString).
   169  			Required(false)).
   170  		Param(restful.QueryParameter("offset", "查询偏移量, 默认为0").DataType(typeNameInteger).Required(false).
   171  			DefaultValue("0")).
   172  		Param(restful.QueryParameter("limit", "本次查询条数, 最大为100").DataType(typeNameInteger).Required(false)).
   173  		Returns(0, "", struct {
   174  			BatchQueryResponse
   175  			Users []*apisecurity.User `json:"users,omitempty"`
   176  		}{})
   177  }
   178  
   179  func EnrichCreateUsersApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   180  	return r.
   181  		Doc("批量创建用户").
   182  		Metadata(restfulspec.KeyOpenAPITags, usersApiTags).
   183  		Reads([]apisecurity.User{}, "create user").
   184  		Returns(0, "", struct {
   185  			BatchWriteResponse
   186  			Responses []struct {
   187  				BaseResponse
   188  				User apisecurity.User `json:"user,omitempty"`
   189  			} `json:"responses"`
   190  		}{})
   191  }
   192  
   193  func EnrichDeleteUsersApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   194  	return r.
   195  		Doc("批量删除用户").
   196  		Metadata(restfulspec.KeyOpenAPITags, usersApiTags).
   197  		Reads([]apisecurity.User{}, "delete user").
   198  		Returns(0, "", struct {
   199  			BatchWriteResponse
   200  			Responses []struct {
   201  				BaseResponse
   202  				User apisecurity.User `json:"user,omitempty"`
   203  			} `json:"responses"`
   204  		}{})
   205  }
   206  
   207  func EnrichUpdateUserApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   208  	return r.
   209  		Doc("更新用户").
   210  		Metadata(restfulspec.KeyOpenAPITags, usersApiTags).
   211  		Reads(apisecurity.User{}, "update user").
   212  		Returns(0, "", BaseResponse{})
   213  }
   214  
   215  func EnrichUpdateUserPasswordApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   216  	return r.
   217  		Doc("更新用户密码").
   218  		Metadata(restfulspec.KeyOpenAPITags, usersApiTags).
   219  		Reads(apisecurity.ModifyUserPassword{}, "update user password").
   220  		Returns(0, "", BaseResponse{})
   221  }
   222  
   223  func EnrichGetUserTokenApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   224  	return r.
   225  		Doc("获取用户Token").
   226  		Metadata(restfulspec.KeyOpenAPITags, usersApiTags).
   227  		Param(restful.QueryParameter("id", "用户ID").DataType(typeNameString).Required(true)).
   228  		Returns(0, "", struct {
   229  			BaseResponse
   230  			User apisecurity.User `json:"user"`
   231  		}{})
   232  }
   233  
   234  func EnrichUpdateUserTokenApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   235  	return r.
   236  		Doc("更新用户Token").
   237  		Metadata(restfulspec.KeyOpenAPITags, usersApiTags).
   238  		Reads(apisecurity.User{}, "update user token").
   239  		Returns(0, "", struct {
   240  			BaseResponse
   241  			User apisecurity.User `json:"user"`
   242  		}{})
   243  }
   244  
   245  func EnrichResetUserTokenApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   246  	return r.
   247  		Doc("重置用户Token").
   248  		Metadata(restfulspec.KeyOpenAPITags, usersApiTags).
   249  		Reads(apisecurity.User{}, "reset user token").
   250  		Returns(0, "", struct {
   251  			BaseResponse
   252  			User apisecurity.User `json:"user"`
   253  		}{})
   254  }
   255  
   256  func EnrichCreateGroupApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   257  	return r.
   258  		Doc("创建用户组").
   259  		Metadata(restfulspec.KeyOpenAPITags, userGroupApiTags).
   260  		Reads(apisecurity.UserGroup{}, "create group").
   261  		Returns(0, "", struct {
   262  			BaseResponse
   263  			UserGroup apisecurity.UserGroup `json:"userGroup"`
   264  		}{})
   265  }
   266  
   267  func EnrichUpdateGroupsApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   268  	return r.
   269  		Doc("更新用户组").
   270  		Metadata(restfulspec.KeyOpenAPITags, userGroupApiTags).
   271  		Reads(apisecurity.UserGroup{}, "update group").
   272  		Returns(0, "", struct {
   273  			BaseResponse
   274  			UserGroup apisecurity.UserGroup `json:"userGroup"`
   275  		}{})
   276  }
   277  
   278  func EnrichGetGroupsApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   279  	return r.
   280  		Doc("查询用户组列表").
   281  		Metadata(restfulspec.KeyOpenAPITags, userGroupApiTags).
   282  		Param(restful.QueryParameter("id", "用户组ID").DataType(typeNameString).Required(false)).
   283  		Param(restful.QueryParameter("name", "用户组名称, 当前仅提供全模糊搜索").
   284  			DataType(typeNameString).Required(false)).
   285  		Param(restful.QueryParameter("user_id", "用户ID, 用于查询某个用户关联的用户组列表").DataType(typeNameString).
   286  			Required(false)).
   287  		Param(restful.QueryParameter("offset", "查询偏移量, 默认为0").DataType(typeNameInteger).Required(false).
   288  			DefaultValue("0")).
   289  		Param(restful.QueryParameter("limit", "本次查询条数, 最大为100").DataType(typeNameInteger).Required(false)).
   290  		Returns(0, "", struct {
   291  			BatchQueryResponse
   292  			UserGroups []apisecurity.UserGroup `json:"userGroups,omitempty"`
   293  		}{})
   294  }
   295  
   296  func EnrichGetGroupApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   297  	return r.
   298  		Doc("获取用户组详情").
   299  		Metadata(restfulspec.KeyOpenAPITags, userGroupApiTags).
   300  		Param(restful.QueryParameter("id", "用户组ID").DataType(typeNameInteger).Required(true)).
   301  		Returns(0, "", struct {
   302  			BaseResponse
   303  			UserGroup apisecurity.UserGroup `json:"userGroup"`
   304  		}{})
   305  }
   306  
   307  func EnrichGetGroupTokenApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   308  	return r.
   309  		Doc("获取用户组 token").
   310  		Metadata(restfulspec.KeyOpenAPITags, userGroupApiTags).
   311  		Param(restful.QueryParameter("id", "用户组ID").DataType(typeNameInteger).Required(true)).
   312  		Returns(0, "", struct {
   313  			BaseResponse
   314  			UserGroup apisecurity.UserGroup `json:"userGroup"`
   315  		}{})
   316  }
   317  
   318  func EnrichDeleteGroupsApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   319  	return r.
   320  		Doc("批量删除用户组").
   321  		Metadata(restfulspec.KeyOpenAPITags, userGroupApiTags).
   322  		Reads([]apisecurity.UserGroup{}, "delete group").
   323  		Returns(0, "", struct {
   324  			BatchWriteResponse
   325  			Responses []struct {
   326  				BaseResponse
   327  				UserGroup apisecurity.User `json:"userGroup,omitempty"`
   328  			} `json:"responses"`
   329  		}{})
   330  }
   331  
   332  func EnrichUpdateGroupTokenApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   333  	return r.
   334  		Doc("更新用户组 token").
   335  		Metadata(restfulspec.KeyOpenAPITags, userGroupApiTags).
   336  		Reads(apisecurity.UserGroup{}, "update user group token").
   337  		Returns(0, "", struct {
   338  			BaseResponse
   339  			UserGroup apisecurity.UserGroup `json:"userGroup"`
   340  		}{})
   341  }
   342  
   343  func EnrichResetGroupTokenApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder {
   344  	return r.
   345  		Doc("重置用户组 token").
   346  		Metadata(restfulspec.KeyOpenAPITags, userGroupApiTags).
   347  		Reads(apisecurity.UserGroup{}, "reset user group token").
   348  		Returns(0, "", struct {
   349  			BaseResponse
   350  			UserGroup apisecurity.UserGroup `json:"userGroup"`
   351  		}{})
   352  }