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 }