auth

package
v0.20.2 Latest Latest
Warning

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

Go to latest
Published: Jun 18, 2022 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Overview

Package auth provides an API to use GraphJin serv auth handles with your own application. Works with routers like chi and http mux. For detailed documentation visit https://graphjin.com

Example usage:

package main

import (
	"net/http"
	"path/filepath"
	"github.com/go-chi/chi"
	"github.com/dosco/graphjin/serv"
	"github.com/dosco/graphjin/serv/auth"
)

func main() {
	conf, err := serv.ReadInConfig(filepath.Join("./config", serv.GetConfigName()))
	if err != nil {
		panic(err)
	}

	useAuth, err := auth.NewAuth(conf.Auth, log, auth.Options{AuthFailBlock: true})
	if err != nil {
		panic(err)
	}

	r := chi.NewRouter()
	r.Use(useAuth)
	r.Get("/user", userInfo)

	http.ListenAndServe(":8080", r)
}

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HeaderHandler

func HeaderHandler(ac Auth) (handlerFunc, error)

func IsAuth

func IsAuth(c context.Context) bool

func JwtHandler

func JwtHandler(ac Auth) (handlerFunc, error)

func NewAuth

func NewAuth(ac Auth, log *zap.Logger, opt Options) (
	func(next http.Handler) http.Handler, error)

func RailsCookieHandler

func RailsCookieHandler(ac Auth) (handlerFunc, error)

func RailsHandler

func RailsHandler(ac Auth) (handlerFunc, error)

func RailsMemcacheHandler

func RailsMemcacheHandler(ac Auth) (handlerFunc, error)

func RailsRedisHandler

func RailsRedisHandler(ac Auth) (handlerFunc, error)

func SimpleHandler

func SimpleHandler(ac Auth) (handlerFunc, error)

func UserID

func UserID(c context.Context) interface{}

func UserIDInt

func UserIDInt(c context.Context) int

Types

type Auth

type Auth struct {
	// Name is a friendly name for this auth config
	Name string
	// Type can be magiclink, rails, jwt or header
	Type string

	// Cookie is the name of the cookie used
	Cookie string

	// In certain cases like Magiclink the jwt cookie
	// is generated by us this helps set the secure parameter
	// of this cookie
	CookieHTTPS bool `mapstructure:"cookie_https"`

	// In certain cases like Magiclink the jwt cookie
	// is generated by us this helps set the expiry parameter
	// of this cookie (ex. "20m", "2h")
	CookieExpiry string `mapstructure:"cookie_expiry"`

	// CredsInHeader is used in dev only to allow for credentials
	// in header values. Example: The X-User-ID HTTP header can be used to
	// set the user id.
	CredsInHeader bool `mapstructure:"creds_in_header"`

	// SubsCredsInVars is used in dev only to allow for credentials
	// in websocket variable. Example: The user_id websocket variable can be used to
	// set the user id.
	SubsCredsInVars bool `mapstructure:"subs_creds_in_vars"`

	// Rails cookie authentication
	Rails struct {
		// Rails version is needed to decode the cookie correctly.
		// Can be 5.2 or 6
		Version string

		// SecretKeyBase is the cookie encryption key used in your Rails config
		SecretKeyBase string `mapstructure:"secret_key_base"`

		// URL is used for Rails cookie store based auth.
		// Example: redis://redis-host:6379 or memcache://memcache-host
		URL string

		// Password is set if needed by Redis or Memcache
		Password string

		// MaxIdle maximum idle time for the connection
		MaxIdle int `mapstructure:"max_idle"`

		// MaxActive maximum active time for the connection
		MaxActive int `mapstructure:"max_active"`

		// Salt value is from your Rails 5.2 and below auth config
		Salt string

		// SignSalt value is from your Rails 5.2 and below auth config
		SignSalt string `mapstructure:"sign_salt"`

		// AuthSalt value is from your Rails 5.2 and below auth config
		AuthSalt string `mapstructure:"auth_salt"`
	}

	// JWT  authentication
	JWT JWTConfig

	// Header authentication
	Header struct {
		// Name of the HTTP header
		Name string

		// Value if set must match expected value (optional)
		Value string

		// Exists if set to true then the header must exist
		// this is an alternative to using value
		Exists bool
	}

	// Magic.link authentication
	MagicLink struct {
		Secret string
	}
}

Auth struct contains authentication related config values used by the GraphJin service

type JWTConfig

type JWTConfig = provider.JWTConfig

type Options

type Options struct {
	// Return a HTTP '401 Unauthoized' when auth fails
	AuthFailBlock bool
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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