auth

package
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Jun 10, 2024 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ContentType             = "Content-Type"
	ApplicationJson         = "application/json"
	ExchangeRefreshTokenURL = "https://securetoken.googleapis.com/v1/token"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	SkipFirebaseInit bool
	Firebase         FirebaseConf
}

type FirebaseAccountKey

type FirebaseAccountKey struct {
	Type                    string `json:"type"`
	ProjectID               string `json:"project_id"`
	PrivateKeyID            string `json:"private_key_id"`
	PrivateKey              string `json:"private_key"`
	ClientEmail             string `json:"client_email"`
	ClientID                string `json:"client_id"`
	AuthURI                 string `json:"auth_uri"`
	TokenURI                string `json:"token_uri"`
	AuthProviderx509CertURL string `json:"auth_provider_x509_cert_url"`
	Clientx509CertURL       string `json:"client_x509_cert_url"`
}

type FirebaseConf

type FirebaseConf struct {
	AccountKey FirebaseAccountKey
	ApiKey     string
}

type FirebaseUser

type FirebaseUser struct {
	ID                 string    `json:"id"`
	Email              string    `json:"email"`
	IsEmailVerified    null.Bool `json:"is_email_verified"`
	PhoneNumber        string    `json:"phone_number"`
	Password           string    `json:"password"`
	DisplayName        string    `json:"display_name"`
	PhotoURL           string    `json:"photo_url"`
	IsDisabled         null.Bool `json:"is_disabled"`
	CreationTimestamp  int64     `json:"creation_timestamp"`
	LastLoginTimestamp int64     `json:"last_login_timestamp"`
}

type FirebaseUserParam

type FirebaseUserParam struct {
	ID          string `json:"id"`
	Email       string `json:"email"`
	PhoneNumber string `json:"phone_number"`
}

type Interface

type Interface interface {
	VerifyToken(ctx context.Context, bearertoken string) (*firebase_auth.Token, error)
	GetUser(ctx context.Context, userParam FirebaseUserParam) ([]FirebaseUser, error)
	RegisterUser(ctx context.Context, user FirebaseUser) (FirebaseUser, error)
	UpdateUser(ctx context.Context, user FirebaseUser) (FirebaseUser, error)
	DeleteUser(ctx context.Context, userID string) error
	SetUserAuthInfo(ctx context.Context, param UserAuthParam) context.Context
	GetUserAuthInfo(ctx context.Context) (UserAuthInfo, error)
	RevokeUserRefreshToken(ctx context.Context, uid string) error
	VerifyPassword(ctx context.Context, email, password string) (bool, error)
	GetUsers(ctx context.Context, userParams []FirebaseUserParam) ([]FirebaseUser, error)
	SignInWithPassword(ctx context.Context, param UserLogin) (UserLoginResponse, error)
	RefreshToken(ctx context.Context, refreshToken string) (RefreshTokenResponse, error)
}

func Init

func Init(cfg Config, log logger.Interface, json parser.JsonInterface, httpClient *http.Client) Interface

type RefreshTokenRequest

type RefreshTokenRequest struct {
	GrantType    string `json:"grant_type"`
	RefreshToken string `json:"refresh_token"`
}

type RefreshTokenResponse

type RefreshTokenResponse struct {
	ExpiresIn    string `json:"expires_in"`
	TokenType    string `json:"token_type"`
	RefreshToken string `json:"refresh_token"`
	IDToken      string `json:"id_token"`
	UserID       string `json:"user_id"`
	ProjectID    string `json:"project_id"`
}

type Token

type Token struct {
	TokenType    string `json:"token_type"`
	AccessToken  string `json:"access_token"`
	RefreshToken string `json:"refresh_token"`
	ExpiresIn    int    `json:"expires_in"`
}

type User

type User struct {
	ID          int64  `db:"id" json:"id"`
	CompanyID   int64  `db:"fk_company_id" json:"companyId"`
	Name        string `db:"name" json:"name"`
	Email       string `db:"email" json:"email"`
	UID         string `db:"uid" json:"uid"`
	RoleID      int64  `db:"fk_role_id" json:"roleId"`
	RoleRank    int64  `db:"rank" json:"roleRank"`
	PhoneNumber string `db:"phone_num" json:"phoneNumber"`
	IsQA        bool   `db:"is_qa" json:"isQa"`
}

type UserAuthInfo

type UserAuthInfo struct {
	User           User                `json:"user"`
	FirebaseToken  firebase_auth.Token `json:"firebaseToken"`
	UserCredential UserCredential      `json:"userCredential"`
}

type UserAuthParam

type UserAuthParam struct {
	User           User                 `json:"user"`
	FirebaseToken  *firebase_auth.Token `json:"firebaseToken"`
	UserCredential *UserCredential      `json:"userCredential"`
}

type UserCredential

type UserCredential struct {
	ID           int64     `db:"id" json:"id"`
	UserID       int64     `db:"fk_user_id" json:"userId"`
	ServiceID    int64     `db:"fk_service_id" json:"serviceId"`
	AccessToken  string    `db:"access_token" json:"accessToken"`
	RefreshToken string    `db:"refresh_token" json:"refreshToken"`
	UserAgent    string    `db:"user_agent" json:"userAgent"`
	ExpiredAt    null.Time `db:"expired_at" json:"expiredAt"`
	IsRevoke     bool      `db:"is_revoke" json:"isRevoke"`
}

type UserLogin

type UserLogin struct {
	Email    string `json:"email"`
	Password string `json:"password"`
}

type UserLoginResponse

type UserLoginResponse struct {
	Kind           string `json:"kind"`
	LocalID        string `json:"localId"`
	Email          string `json:"email"`
	DisplayName    string `json:"displayName"`
	IDToken        string `json:"idToken"`
	Registered     bool   `json:"registered"`
	ProfilePicture string `json:"profilePicture"`
	RefreshToken   string `json:"refreshToken"`
	ExpiresIn      int64  `json:"expiresIn"`
}

type UserRefreshTokenParam

type UserRefreshTokenParam struct {
	RefreshToken string `form:"refreshToken"`
}

Jump to

Keyboard shortcuts

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