(c *gin.Context)
| 27 | } |
| 28 | |
| 29 | func LinuxDoBind(c *gin.Context) { |
| 30 | if !common.LinuxDOOAuthEnabled { |
| 31 | c.JSON(http.StatusOK, gin.H{ |
| 32 | "success": false, |
| 33 | "message": "管理员未开启通过 Linux DO 登录以及注册", |
| 34 | }) |
| 35 | return |
| 36 | } |
| 37 | |
| 38 | code := c.Query("code") |
| 39 | linuxdoUser, err := getLinuxdoUserInfoByCode(code, c) |
| 40 | if err != nil { |
| 41 | common.ApiError(c, err) |
| 42 | return |
| 43 | } |
| 44 | |
| 45 | user := model.User{ |
| 46 | LinuxDOId: strconv.Itoa(linuxdoUser.Id), |
| 47 | } |
| 48 | |
| 49 | if model.IsLinuxDOIdAlreadyTaken(user.LinuxDOId) { |
| 50 | c.JSON(http.StatusOK, gin.H{ |
| 51 | "success": false, |
| 52 | "message": "该 Linux DO 账户已被绑定", |
| 53 | }) |
| 54 | return |
| 55 | } |
| 56 | |
| 57 | session := sessions.Default(c) |
| 58 | id := session.Get("id") |
| 59 | user.Id = id.(int) |
| 60 | |
| 61 | err = user.FillUserById() |
| 62 | if err != nil { |
| 63 | common.ApiError(c, err) |
| 64 | return |
| 65 | } |
| 66 | |
| 67 | user.LinuxDOId = strconv.Itoa(linuxdoUser.Id) |
| 68 | err = user.Update(false) |
| 69 | if err != nil { |
| 70 | common.ApiError(c, err) |
| 71 | return |
| 72 | } |
| 73 | |
| 74 | c.JSON(http.StatusOK, gin.H{ |
| 75 | "success": true, |
| 76 | "message": "bind", |
| 77 | }) |
| 78 | } |
| 79 | |
| 80 | func getLinuxdoUserInfoByCode(code string, c *gin.Context) (*LinuxdoUser, error) { |
| 81 | if code == "" { |
no test coverage detected