|
|
|
|
syntax = "v1"
|
|
|
|
|
|
|
|
|
|
import "../base.api"
|
|
|
|
|
|
|
|
|
|
type (
|
|
|
|
|
// OAuth log in request | OAuth 登录请求
|
|
|
|
|
// swagger:parameters OauthLogin
|
|
|
|
|
OauthLoginReq {
|
|
|
|
|
// Provider name | 服务提供商名称
|
|
|
|
|
//
|
|
|
|
|
// In: query
|
|
|
|
|
// Required: true
|
|
|
|
|
// Max Length: 40
|
|
|
|
|
// Example: [google, github, facebook]
|
|
|
|
|
Provider string `form:"provider" validate:"max=40"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// OAuth login return auth url | OAuth登录返回提供商登录页地址
|
|
|
|
|
OauthLoginResp {
|
|
|
|
|
// Auth URL | 提供商登录地址
|
|
|
|
|
AuthUrl string `json:"authUrl"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// OAuth log in by code request | OAuth 直接登录请求
|
|
|
|
|
OauthLoginByCodeReq {
|
|
|
|
|
// Code | 一次性code
|
|
|
|
|
Code string `json:"code"`
|
|
|
|
|
|
|
|
|
|
// Provider name | 服务提供商名称
|
|
|
|
|
//
|
|
|
|
|
// Example: [wechat,google]
|
|
|
|
|
Provider string `json:"provider" validate:"max=40"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// OAuth log in by phone code request | OAuth 手机号码登录请求
|
|
|
|
|
OauthLoginByPhoneCodeReq {
|
|
|
|
|
// AuthCode | 登录Code,非必填,为了平台兼容性
|
|
|
|
|
AuthCode string `json:"authCode,optional"`
|
|
|
|
|
|
|
|
|
|
// Code | 一次性code
|
|
|
|
|
Code string `json:"code"`
|
|
|
|
|
|
|
|
|
|
// Provider name | 服务提供商名称
|
|
|
|
|
//
|
|
|
|
|
// Example: [wechat,google]
|
|
|
|
|
Provider string `json:"provider" validate:"max=40"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Log in request | 普通登录请求
|
|
|
|
|
LoginReq {
|
|
|
|
|
// Log in subject | 登录主体(用户名/邮箱/手机号码)| 作用于验证码时,不支持用户名
|
|
|
|
|
Subject string `json:"subject"`
|
|
|
|
|
|
|
|
|
|
// Credentials | 登录凭证
|
|
|
|
|
Credentials string `json:"credentials"`
|
|
|
|
|
|
|
|
|
|
// Platform | 当前登录平台
|
|
|
|
|
Platform string `json:"platform"`
|
|
|
|
|
|
|
|
|
|
// Captcha ID which store in redis | 图形验证码编号, 存在redis中
|
|
|
|
|
//
|
|
|
|
|
// Required: true
|
|
|
|
|
// Max length: 32
|
|
|
|
|
CaptchaId string `json:"captchaId,optional" validate:"len=32"`
|
|
|
|
|
|
|
|
|
|
// The Captcha which users input | 用户输入的验证码
|
|
|
|
|
//
|
|
|
|
|
// Required: true
|
|
|
|
|
// Max length: 4
|
|
|
|
|
Captcha string `json:"captcha,optional" validate:"len=4"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// LoginResp | 登录返回数据
|
|
|
|
|
// swagger:model LoginResp
|
|
|
|
|
LoginResp {
|
|
|
|
|
// TwoFactorType | 两步验证类型,空字符串表示无需两步验证
|
|
|
|
|
TwoFactorType string `json:"twoFactorType"`
|
|
|
|
|
|
|
|
|
|
// Token | Token信息
|
|
|
|
|
Token LoginTokenInfo `json:"token,optional"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// LoginTokenInfo | Token数据
|
|
|
|
|
// swagger:model LoginTokenInfo
|
|
|
|
|
LoginTokenInfo {
|
|
|
|
|
// User ID | 用户ID
|
|
|
|
|
UID int64 `json:"uid,string"`
|
|
|
|
|
|
|
|
|
|
// Token Type | Token类型 Authorization: {token_type} {access_token}
|
|
|
|
|
//
|
|
|
|
|
// Example: [Bearer]
|
|
|
|
|
TokenType string `json:"token_type"`
|
|
|
|
|
|
|
|
|
|
// Access Token | Jwt-Token
|
|
|
|
|
AccessToken string `json:"access_token"`
|
|
|
|
|
|
|
|
|
|
// Expires At | 过期具体时间,时间戳格式
|
|
|
|
|
ExpiresAt int64 `json:"expires_at"`
|
|
|
|
|
|
|
|
|
|
// Scope | 授权范围,逗号分割
|
|
|
|
|
Scope string `json:"scope,omitempty,optional"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Register request | 注册请求
|
|
|
|
|
RegisterReq {
|
|
|
|
|
// Username | 用户名
|
|
|
|
|
Username *string `json:"username,optional"`
|
|
|
|
|
|
|
|
|
|
// Email | 邮箱
|
|
|
|
|
Email *string `json:"email,optional"`
|
|
|
|
|
|
|
|
|
|
// PhoneNumber | 手机号码
|
|
|
|
|
PhoneNumber *string `json:"phoneNumber,optional"`
|
|
|
|
|
|
|
|
|
|
// Credentials | 凭证
|
|
|
|
|
Credentials string `json:"credentials"`
|
|
|
|
|
|
|
|
|
|
// Code | 验证码
|
|
|
|
|
Code *string `json:"code,optional"`
|
|
|
|
|
|
|
|
|
|
// Captcha ID which store in redis | 图形验证码编号, 存在redis中
|
|
|
|
|
//
|
|
|
|
|
// Required: true
|
|
|
|
|
// Max length: 32
|
|
|
|
|
CaptchaId string `json:"captchaId,optional" validate:"len=32"`
|
|
|
|
|
|
|
|
|
|
// The Captcha which users input | 用户输入的验证码
|
|
|
|
|
//
|
|
|
|
|
// Required: true
|
|
|
|
|
// Max length: 6
|
|
|
|
|
Captcha string `json:"captcha,optional" validate:"len=4"`
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
@server(
|
|
|
|
|
group: auth
|
|
|
|
|
prefix: /api/auth
|
|
|
|
|
)
|
|
|
|
|
service api {
|
|
|
|
|
// Oauth log in | Oauth 第三方登录,获取登录地址(通常针对PC网页登录,APP端自行获取code)
|
|
|
|
|
@handler oauthLogin
|
|
|
|
|
get /oauth/login (OauthLoginReq) returns (OauthLoginResp)
|
|
|
|
|
|
|
|
|
|
// Oauth log in by code | Oauth 第三方登录,客户端自行获取code进行登录
|
|
|
|
|
@handler oauthLoginByCode
|
|
|
|
|
post /oauth/login/byCode (OauthLoginByCodeReq) returns (LoginResp)
|
|
|
|
|
|
|
|
|
|
// Oauth log in by phone code | Oauth 第三方登录,客户端获取换取手机号的code进行登录
|
|
|
|
|
@handler oauthLoginByPhone
|
|
|
|
|
post /oauth/login/byPhone (OauthLoginByPhoneCodeReq) returns (LoginResp)
|
|
|
|
|
|
|
|
|
|
// Oauth log in callback route | Oauth 登录返回调接口,即redirect_uri
|
|
|
|
|
@handler oauthCallback
|
|
|
|
|
get /oauth/login/callback returns (LoginResp)
|
|
|
|
|
|
|
|
|
|
// Log in | 密码登录
|
|
|
|
|
@handler login
|
|
|
|
|
post /login (LoginReq) returns (LoginResp)
|
|
|
|
|
|
|
|
|
|
// Log in by code | 验证码登录,手机x邮箱
|
|
|
|
|
@handler loginByCode
|
|
|
|
|
post /login/byCode (LoginReq) returns (LoginResp)
|
|
|
|
|
|
|
|
|
|
// Register | 注册
|
|
|
|
|
@handler register
|
|
|
|
|
post /register (RegisterReq) returns (BaseID)
|
|
|
|
|
}
|