oauthservice

package
v0.2.69 Latest Latest
Warning

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

Go to latest
Published: Sep 7, 2026 License: MIT Imports: 33 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ProviderGitHub  = "github"
	ProviderGoogle  = "google"
	ProviderDiscord = "discord"
)

Variables

This section is empty.

Functions

func GetOAuthByUserID

func GetOAuthByUserID(userID uint64, provider string) *userOAuth.Entity

GetOAuthByUserID returns a user's OAuth binding for a provider.

func GetUserOAuthBindings

func GetUserOAuthBindings(userID uint64) map[string]*userOAuth.Entity

GetUserOAuthBindings returns active OAuth bindings keyed by provider.

func InitOAuth

func InitOAuth()

InitOAuth configures available OAuth providers.

func IsProviderEnabled added in v0.2.69

func IsProviderEnabled(key string) bool

func ProcessOAuthBind

func ProcessOAuthBind(userID uint64, gothUser goth.User) error

ProcessOAuthBind binds a provider account to an existing user.

func ProcessOAuthCallback

func ProcessOAuthCallback(gothUser goth.User) (*users.EntityComplete, error)

ProcessOAuthCallback logs in an existing OAuth user or creates a new one.

func ReloadCurrentProviders added in v0.2.69

func ReloadCurrentProviders() error

func ReloadProviders added in v0.2.69

func ReloadProviders(config pageConfig.OAuthSettingsConfig) error

func SaveSettings added in v0.2.69

func SaveSettings(update SettingsUpdate) error

func StartFlow added in v0.2.69

func StartFlow(res http.ResponseWriter, req *http.Request, provider string, userID uint64, requestedMode, redirect string) error

func UnbindOAuth

func UnbindOAuth(userID uint64, provider string) error

UnbindOAuth removes one OAuth binding after safety checks.

Types

type AdminProviderView added in v0.2.69

type AdminProviderView struct {
	Key                    string   `json:"key"`
	DisplayName            string   `json:"displayName"`
	Kind                   string   `json:"kind"`
	Enabled                bool     `json:"enabled"`
	ClientID               string   `json:"clientId"`
	ClientSecretConfigured bool     `json:"clientSecretConfigured"`
	CallbackURL            string   `json:"callbackUrl"`
	DiscoveryURL           string   `json:"discoveryUrl,omitempty"`
	Scopes                 []string `json:"scopes,omitempty"`
}

type AdminSettingsView added in v0.2.69

type AdminSettingsView struct {
	Providers []AdminProviderView `json:"providers"`
}

func AdminSettings added in v0.2.69

func AdminSettings() AdminSettingsView

type BindingProvider added in v0.2.69

type BindingProvider struct {
	Key         string     `json:"key"`
	DisplayName string     `json:"displayName"`
	Enabled     bool       `json:"enabled"`
	Bound       bool       `json:"bound"`
	BoundAt     *time.Time `json:"boundAt,omitempty"`
}

func BindingProviders added in v0.2.69

func BindingProviders(userID uint64) []BindingProvider

type Flow added in v0.2.69

type Flow struct {
	Provider string `json:"provider"`
	Mode     string `json:"mode"`
	UserID   uint64 `json:"userId,omitempty"`
	Redirect string `json:"redirect,omitempty"`
	IssuedAt int64  `json:"issuedAt"`
}

func ConsumeFlow added in v0.2.69

func ConsumeFlow(res http.ResponseWriter, req *http.Request, provider string) (Flow, error)

type OAuthUserInfo

type OAuthUserInfo struct {
	ID        string `json:"id"`
	Login     string `json:"login"`
	Name      string `json:"name"`
	Email     string `json:"email"`
	AvatarURL string `json:"avatar_url"`
	Bio       string `json:"bio"`
	Blog      string `json:"blog"`
	Location  string `json:"location"`
	Provider  string `json:"provider"`
}

OAuthUserInfo is the normalized user data from an OAuth provider.

type ProviderUpdate added in v0.2.69

type ProviderUpdate struct {
	Key               string   `json:"key"`
	DisplayName       string   `json:"displayName"`
	Kind              string   `json:"kind"`
	Enabled           bool     `json:"enabled"`
	ClientID          string   `json:"clientId"`
	ClientSecret      string   `json:"clientSecret"`
	ClearClientSecret bool     `json:"clearClientSecret"`
	DiscoveryURL      string   `json:"discoveryUrl"`
	Scopes            []string `json:"scopes"`
}

type PublicProvider added in v0.2.69

type PublicProvider struct {
	Key         string `json:"key"`
	DisplayName string `json:"displayName"`
}

func EnabledProviders added in v0.2.69

func EnabledProviders() []PublicProvider

type SettingsUpdate added in v0.2.69

type SettingsUpdate struct {
	Providers []ProviderUpdate `json:"providers" validate:"required"`
}

Jump to

Keyboard shortcuts

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