oauthclient

package
v1.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 13, 2023 License: BSD-2-Clause Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// account logged in from other source: FB/Google/Github
	AccTypeExternal = "external"
	// account logged with username and password
	AccTypeInternal = "internal"
	// account external but has set username and password
	AccTypeBoth = "both"
)

Variables

This section is empty.

Functions

func New

func New(name string, clientConf clientcredentials.Config) *oauth

Types

type AccountType

type AccountType string

type Gender

type Gender string

type OAuthUser

type OAuthUser struct {
	Id          string          `json:"id" gorm:"id"`
	Username    string          `json:"username" gorm:"username"`
	Email       string          `json:"email"`
	PhonePrefix string          `json:"phone_prefix" bson:"phone_prefix,omitempty" gorm:"phone_prefix"`
	Phone       string          `json:"phone" bson:"phone,omitempty"`
	AccountType AccountType     `json:"account_type" bson:"account_type" gorm:"account_type"`
	FBId        string          `json:"fb_id" bson:"fb_id" gorm:"fb_id"`
	AKId        string          `json:"ak_id" bson:"account_kit_id" gorm:"column:account_kit_id"`
	AppleId     string          `json:"apple_id" bson:"apple_id" gorm:"apple_id"`
	ClientId    string          `json:"client_id" bson:"client_id"`
	Dob         *sdkcm.JSONDate `json:"dob,omitempty" form:"-" gorm:"dob" time_format:"2006-01-02"`
	Status      *int            `json:"-" form:"-" gorm:"status"`
	Gender      *Gender         `json:"gender,omitempty" form:"gender" gorm:"gender"`
	Address     *string         `json:"address,omitempty" form:"address" gorm:"address"`
}

type OAuthUserCreate

type OAuthUserCreate struct {
	Username    *string      `json:"username" gorm:"username"`
	Password    *string      `json:"-"`
	Email       *string      `json:"email"`
	PhonePrefix *string      `json:"phone_prefix" bson:"phone_prefix,omitempty" gorm:"phone_prefix"`
	Phone       *string      `json:"phone" bson:"phone,omitempty"`
	AccountType *AccountType `json:"account_type" bson:"account_type" gorm:"account_type"`
	FBId        *string      `json:"fb_id" bson:"fb_id" gorm:"fb_id"`
	AKId        *string      `json:"ak_id" bson:"account_kit_id" gorm:"column:account_kit_id"`
	AppleId     *string      `json:"apple_id" bson:"apple_id" gorm:"apple_id"`
	ClientId    *string      `json:"client_id" bson:"client_id"`
}

type OAuthUserFilter

type OAuthUserFilter struct {
	UserId      *string `json:"id" bson:"-" gorm:"-"`
	Username    *string `json:"username" gorm:"username"`
	Email       *string `json:"email"`
	PhonePrefix *string `json:"phone_prefix" bson:"phone_prefix,omitempty" gorm:"phone_prefix"`
	Phone       *string `json:"phone" bson:"phone,omitempty"`
	FBId        *string `json:"fb_id" bson:"fb_id" gorm:"fb_id"`
	AKId        *string `json:"ak_id" bson:"account_kit_id" gorm:"column:account_kit_id"`
	AppleId     *string `json:"apple_id" bson:"apple_id" gorm:"apple_id"`
	ClientId    *string `json:"client_id" bson:"client_id"`
}

type OAuthUserLogin

type OAuthUserLogin struct {
	Username *string `json:"username" gorm:"username"`
	Email    *string `json:"email" gorm:"email"`
	Phone    *string `json:"phone" gorm:"phone"`
	Password *string `json:"password" gorm:"phone"`
	OTPCode  *string `json:"otp_code" gorm:"otp_code"`
	ClientId *string `json:"client_id" gorm:"client"`
}

func (*OAuthUserLogin) URLValues

func (oul *OAuthUserLogin) URLValues() url.Values

type OAuthUserUpdate

type OAuthUserUpdate struct {
	Username    *string
	FirstName   *string `json:"first_name" form:"first_name" gorm:"first_name"`
	LastName    *string `json:"last_name" form:"last_name" gorm:"last_name"`
	Email       *string `json:"email,omitempty" form:"email" gorm:"email"`
	PhonePrefix *string `json:"phone_prefix,omitempty" form:"phone_prefix" gorm:"phone_prefix"`
	Phone       *string `json:"phone,omitempty" form:"phone" gorm:"phone"`
	Gender      *Gender `json:"gender,omitempty" form:"gender" gorm:"gender"`
	Address     *string `json:"address,omitempty" form:"address" gorm:"address"`

	Dob       *sdkcm.JSONDate `json:"dob,omitempty" form:"-" gorm:"dob" time_format:"2006-01-02"`
	DobString *string         `json:"dob" form:"dob" gorm:"-"`
	Status    *int            `json:"-" form:"-" gorm:"status"`

	Password             *string `json:"password"`
	PasswordConfirmation *string `json:"password_confirmation" gorm:"-"`

	FBId        *string      `json:"fb_id" bson:"fb_id" gorm:"fb_id"`
	AKId        *string      `json:"ak_id" bson:"account_kit_id" gorm:"column:account_kit_id"`
	AppleId     *string      `json:"apple_id" bson:"apple_id" gorm:"apple_id"`
	AccountType *AccountType `json:"account_type" bson:"account_type" gorm:"account_type"`
}

func (*OAuthUserUpdate) ProcessData

func (u *OAuthUserUpdate) ProcessData() error

func (OAuthUserUpdate) TableName

func (OAuthUserUpdate) TableName() string

type Token

type Token struct {
	AccessToken         string `json:"access_token"`
	RefreshToken        string `json:"refresh_token"`
	OAuthId             string `json:"oauth_id"`
	Expiry              int    `json:"expires_in"`
	IsNew               bool   `json:"is_new"`
	HasUsernamePassword bool   `json:"has_username_password"`
}

type TokenIntrospect

type TokenIntrospect struct {
	Active   bool   `json:"active"`
	ClientId string `json:"client_id"`
	Scope    string `json:"scope"`
	Exp      uint32 `json:"exp"`
	Iat      uint32 `json:"iat"`
	Sub      string `json:"sub"`
	Username string `json:"username"`
	Email    string `json:"email"`
	UserId   string `json:"user_id"`
}

func (TokenIntrospect) OAuthID

func (t TokenIntrospect) OAuthID() string

type TokenResponse

type TokenResponse struct {
	*Token `json:",inline"`
	Error  string `json:"error_hint"`
}

type TrustedClient

type TrustedClient interface {
	PasswordCredentialsToken(ctx context.Context, username, password string) (*Token, error)
	Introspect(ctx context.Context, token string) (*TokenIntrospect, error)
	RefreshToken(ctx context.Context, refreshToken string) (*Token, error)
	FindUserById(ctx context.Context, uid string) (*OAuthUser, error)
	FindUser(ctx context.Context, filter *OAuthUserFilter) (*OAuthUser, error)
	CreateUser(ctx context.Context, user *OAuthUserCreate) (*Token, error)
	UpdateUser(ctx context.Context, uid string, update *OAuthUserUpdate) error
	CreateUserWithEmail(ctx context.Context, email string) (*Token, error)
	CreateUserWithPhone(ctx context.Context, phone string) (*Token, error)
	CreateUserWithFacebook(ctx context.Context, fbId, email string) (*Token, error)
	CreateUserWithAccountKit(ctx context.Context, akId, email, prefix, phone string) (*Token, error)
	CreateUserWithApple(ctx context.Context, appleId, email string) (*Token, error)
	ChangePassword(ctx context.Context, userId, oldPass, newPass string) error
	SetUsernamePassword(ctx context.Context, userId, username, password string) error
	LoginOtherCredential(ctx context.Context, userLogin *OAuthUserLogin) (*Token, error)
	DeleteUser(ctx context.Context, userId string) error
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL