postgres

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Jul 30, 2023 License: MIT Imports: 10 Imported by: 0

README

Postgres Storage for OAuth 2.0

ReportCard GoDoc License

Install

$ go get -v gopkg.in/JonathanMonga/go-oauth2-postgres.v1

Usage

package main

import (
	"gopkg.in/JonathanMonga/go-oauth2-postgres.v1"
	"github.com/go-oauth2/oauth2/v4/manage"

	_ "github.com/lib/pq"
)

func main() {
	manager := manage.NewDefaultManager()

	// use postgres token store
	store := postgres.NewDefaultStore(
		postgres.NewConfig("postgres://postgres:password@localhost/myapp_test?sslmode=disable"),
	)

	defer store.Close()

	manager.MapTokenStorage(store)
	// ...
}

MIT License

Copyright (c) 2023 Jonathan Monga

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	DSN          string
	MaxLifetime  time.Duration
	MaxOpenConns int
	MaxIdleConns int
}

Config postgres configuration

func NewConfig

func NewConfig(dsn string) *Config

NewConfig create postgres configuration instance

type Option

type Option interface {
	// contains filtered or unexported methods
}

func WithGCTimeInterval

func WithGCTimeInterval(interval int) Option

WithGCTimeInterval sets the time interval for garbage collection.

func WithSQLDialect

func WithSQLDialect(dialect gorp.PostgresDialect) Option

WithSQLDialect sets the database for the store.

func WithTableName

func WithTableName(tableName string) Option

WithTableName sets the table name for the store.

type Store

type Store struct {
	// contains filtered or unexported fields
}

Store postgres token store

func NewDefaultStore

func NewDefaultStore(config *Config) *Store

NewDefaultStore create postgres store instance

func NewStore

func NewStore(config *Config, tableName string, gcInterval int) *Store

NewStore create postgres store instance, config postgres configuration, tableName table name (default oauth2_token), GC time interval (in seconds, default 600)

func NewStoreWithDB

func NewStoreWithDB(db *sql.DB, tableName string, gcInterval int) *Store

NewStoreWithDB create postgres store instance, db sql.DB, tableName table name (default oauth2_token), GC time interval (in seconds, default 600)

func NewStoreWithOpts

func NewStoreWithOpts(db *sql.DB, opts ...Option) *Store

NewStoreWithOpts create postgres store instance with apply custom input, db sql.DB, tableName table name (default oauth2_token), GC time interval (in seconds, default 600)

func (*Store) Close

func (s *Store) Close()

Close close the store

func (*Store) Create

func (s *Store) Create(ctx context.Context, info oauth2.TokenInfo) error

Create create and store the new token information

func (*Store) GetByAccess

func (s *Store) GetByAccess(ctx context.Context, access string) (oauth2.TokenInfo, error)

GetByAccess use the access token for token information data

func (*Store) GetByCode

func (s *Store) GetByCode(ctx context.Context, code string) (oauth2.TokenInfo, error)

GetByCode use the authorization code for token information data

func (*Store) GetByRefresh

func (s *Store) GetByRefresh(ctx context.Context, refresh string) (oauth2.TokenInfo, error)

GetByRefresh use the refresh token for token information data

func (*Store) RemoveByAccess

func (s *Store) RemoveByAccess(ctx context.Context, access string) error

RemoveByAccess use the access token to delete the token information

func (*Store) RemoveByCode

func (s *Store) RemoveByCode(ctx context.Context, code string) error

RemoveByCode delete the authorization code

func (*Store) RemoveByRefresh

func (s *Store) RemoveByRefresh(ctx context.Context, refresh string) error

RemoveByRefresh use the refresh token to delete the token information

func (*Store) SetStdout

func (s *Store) SetStdout(stdout io.Writer) *Store

SetStdout set error output

type StoreItem

type StoreItem struct {
	ID        int64  `db:"id,primarykey,autoincrement"`
	ExpiredAt int64  `db:"expired_at"`
	Code      string `db:"code,size:255"`
	Access    string `db:"access,size:255"`
	Refresh   string `db:"refresh,size:255"`
	Data      string `db:"data,size:2048"`
}

StoreItem data item

Jump to

Keyboard shortcuts

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