package controllers // type WeixinCallbackResult struct { // Code int `json:"code"` // Msg string `json:"msg"` // Data interface{} `json:"data"` // } // // 认证相关API // type AuthController struct { // web.Controller // } // var ( // ErrParameterIsIllegal = "参数不全或不合法" // ) // // @Title 给微信用的回调接口 // // @Description 给微信用的回调接口,自己不能直接调用 // // @Param code query string true "客户同意后得到的code" // // @Param block query string true "回调地址" // // @Param state query string false "微信回调的登录状态" // // @Success 200 {object} controllers.CallResult // // @Failure 200 {object} controllers.CallResult // // @router /GetWeiXinUserInfo [get] // func (c *AuthController) GetWeiXinUserInfo() { // retVal := &WeixinCallbackResult{} // var err error // code := c.GetString("code") // block := c.GetString("block") // state := c.GetString("state") // if block != "" { // if code != "" { // result, err2 := weixin.GetWeiXinUserInfo(code, state) // if err = err2; err == nil { // retVal.Code = 1 // retVal.Msg = "微信登录成功" // retVal.Data = result // } else { // retVal.Msg = err.Error() // } // } else { // retVal.Msg = "code为空" // } // } else { // retVal.Msg = "没有block" // } // redirectURL := fmt.Sprintf("%s?info=%s", block, base64.StdEncoding.EncodeToString(utils.MustMarshal(retVal))) // globals.SugarLogger.Debugf("auth GetWeiXinUserInfo retVal:%s, redirectURL:%s", utils.Format4Output(retVal, true), redirectURL) // c.Redirect(redirectURL, http.StatusTemporaryRedirect) // } // // @Title 登录接口 // // @Description 登录接口 // // @Param id formData string false "登录ID" // // @Param type formData string true "登录类型,当前支持[weixinsns:微信公众号登录,localpass:本地账号密码,mobile:手机短信,weixinmini;小程序code登录]" // // @Param secret formData string true "不同登录类型的登录秘密" // // @Success 200 {object} controllers.CallResult // // @Failure 200 {object} controllers.CallResult // // @router /Login [post] // func (c *AuthController) Login() { // c.callLogin(func(params *tAuthLoginParams) (retVal interface{}, errCode string, err error) { // if params.Type == weixin.LoginTypeMiniProgram { // params.Secret = GetComposedCode(&c.Controller, params.Secret) // } // retVal, err = auth.Login(params.Id, params.Type, params.Secret) // if err == auth.ErrUserNotExist { // return retVal, model.ErrCodeUserNotExist, err // } // return retVal, "", err // }) // } // // @Title 登出接口 // // @Description 登出接口 // // @Param token header string true "认证token" // // @Success 200 {object} controllers.CallResult // // @Failure 200 {object} controllers.CallResult // // @router /Logout [delete] // func (c *AuthController) Logout() { // c.callLogout(func(params *tAuthLogoutParams) (retVal interface{}, errCode string, err error) { // err = auth.Logout(params.Token) // globals.SugarLogger.Debug(err) // return nil, "", err // }) // } // // @Title 得到用户信息 // // @Description 得到用户信息(从token中) // // @Param token header string true "认证token" // // @Success 200 {object} controllers.CallResult // // @Failure 200 {object} controllers.CallResult // // @router /GetUserInfo [get] // func (c *AuthController) GetUserInfo() { // c.callGetUserInfo(func(params *tAuthGetUserInfoParams) (retVal interface{}, errCode string, err error) { // retVal, err = auth.GetUserInfo(params.Token) // return retVal, "", err // }) // } // // @Title 发送验证码 // // @Description 发送验证码 // // @Param mobile formData string true "手机号" // // @Success 200 {object} controllers.CallResult // // @Failure 200 {object} controllers.CallResult // // @router /SendMobileVerifyCode [post] // func (c *AuthController) SendMobileVerifyCode() { // c.callSendMobileVerifyCode(func(params *tAuthSendMobileVerifyCodeParams) (retVal interface{}, errCode string, err error) { // err = mobile.SendVerifyCode(params.Mobile) // return retVal, "", err // }) // } // // @Title 绑定手机 // // @Description 绑定手机,待删除 // // @Param token header string true "认证token" // // @Param mobile formData string true "手机号" // // @Param code formData string true "验证码" // // @Param nickname formData string false "用户名" // // @Success 200 {object} controllers.CallResult // // @Failure 200 {object} controllers.CallResult // // @router /BindMobile [post] // func (c *AuthController) BindMobile() { // c.callBindMobile(func(params *tAuthBindMobileParams) (retVal interface{}, errCode string, err error) { // err = weixin.BindMobile(params.Token, params.Mobile, params.Code, params.Nickname) // if err == auth.ErrUserNotExist { // return retVal, model.ErrCodeUserNotExist, err // } // return retVal, "", err // }) // } // // @Title 微信公众号绑定手机2 // // @Description 微信公众号绑定手机2 // // @Param openID formData string true "微信公众号ID" // // @Param secret formData string true "后台之前返回的secret" // // @Param nickname formData string false "用户名" // // @Param mobile formData string true "手机号" // // @Param verifyCode formData string true "手机验证码" // // @Success 200 {object} controllers.CallResult // // @Failure 200 {object} controllers.CallResult // // @router /BindMobile2 [post] // func (c *AuthController) BindMobile2() { // c.callBindMobile2(func(params *tAuthBindMobile2Params) (retVal interface{}, errCode string, err error) { // if retVal, err = weixin.BindMobile2(params.OpenID, params.Secret, params.Mobile, params.VerifyCode, params.Nickname); err == nil { // cms.TransferLegacyWeixins(params.Mobile) // } else if err == auth.ErrUserNotExist { // return retVal, model.ErrCodeUserNotExist, err // } // return retVal, "", err // }) // } // // @Title 绑定手机 // // @Description 绑定手机(调用此方法前先需要以短信方式登录),待删除 // // @Param token header string true "认证token" // // @Param code formData string true "小程序用户code" // // @Param nickname formData string false "用户名" // // @Success 200 {object} controllers.CallResult // // @Failure 200 {object} controllers.CallResult // // @router /MiniBindWeiXin [post] // func (c *AuthController) MiniBindWeiXin() { // c.callMiniBindWeiXin(func(params *tAuthMiniBindWeiXinParams) (retVal interface{}, errCode string, err error) { // err = weixin.AutherMini.BindWeiXin(params.Ctx, GetComposedCode(&c.Controller, params.Code), params.Nickname) // if err == auth.ErrUserNotExist { // return retVal, model.ErrCodeUserNotExist, err // } // return retVal, "", err // }) // } // // @Title 绑定小程序 // // @Description 绑定小程序 // // @Param token header string true "认证token" // // @Param code formData string true "小程序用户code" // // @Success 200 {object} controllers.CallResult // // @Failure 200 {object} controllers.CallResult // // @router /BindMiniProgram [post] // func (c *AuthController) BindMiniProgram() { // c.callBindMiniProgram(func(params *tAuthBindMiniProgramParams) (retVal interface{}, errCode string, err error) { // err = weixin.AutherMini.BindMiniProgram(params.Ctx, GetComposedCode(&c.Controller, params.Code)) // if err == nil { // cms.TransferLegacyWeixins(params.Ctx.GetLoginID()) // } // if err == auth.ErrUserNotExist { // return retVal, model.ErrCodeUserNotExist, err // } // return retVal, "", err // }) // } // // @Title 解密小程序数据 // // @Description 解密小程序数据 // // @Param token header string true "认证token" // // @Param data formData string true "加密数据" // // @Param iv formData string true "iv" // // @Success 200 {object} controllers.CallResult // // @Failure 200 {object} controllers.CallResult // // @router /MiniDecryptData [post] // func (c *AuthController) MiniDecryptData() { // c.callMiniDecryptData(func(params *tAuthMiniDecryptDataParams) (retVal interface{}, errCode string, err error) { // retVal, err = weixin.AutherMini.DecryptData(params.Ctx, params.Data, params.Iv) // return retVal, "", err // }) // }