MCPcopy Index your code
hub / github.com/aiprodcoder/MIXAPI / OidcBind

Function OidcBind

controller/oidc.go:184–228  ·  view source on GitHub ↗
(c *gin.Context)

Source from the content-addressed store, hash-verified

182}
183
184func OidcBind(c *gin.Context) {
185 if !system_setting.GetOIDCSettings().Enabled {
186 c.JSON(http.StatusOK, gin.H{
187 "success": false,
188 "message": "管理员未开启通过 OIDC 登录以及注册",
189 })
190 return
191 }
192 code := c.Query("code")
193 oidcUser, err := getOidcUserInfoByCode(code)
194 if err != nil {
195 common.ApiError(c, err)
196 return
197 }
198 user := model.User{
199 OidcId: oidcUser.OpenID,
200 }
201 if model.IsOidcIdAlreadyTaken(user.OidcId) {
202 c.JSON(http.StatusOK, gin.H{
203 "success": false,
204 "message": "该 OIDC 账户已被绑定",
205 })
206 return
207 }
208 session := sessions.Default(c)
209 id := session.Get("id")
210 // id := c.GetInt("id") // critical bug!
211 user.Id = id.(int)
212 err = user.FillUserById()
213 if err != nil {
214 common.ApiError(c, err)
215 return
216 }
217 user.OidcId = oidcUser.OpenID
218 err = user.Update(false)
219 if err != nil {
220 common.ApiError(c, err)
221 return
222 }
223 c.JSON(http.StatusOK, gin.H{
224 "success": true,
225 "message": "bind",
226 })
227 return
228}

Callers 1

OidcAuthFunction · 0.85

Calls 7

FillUserByIdMethod · 0.95
UpdateMethod · 0.95
GetOIDCSettingsFunction · 0.92
ApiErrorFunction · 0.92
IsOidcIdAlreadyTakenFunction · 0.92
getOidcUserInfoByCodeFunction · 0.85
GetMethod · 0.80

Tested by

no test coverage detected