mirror of
https://github.com/glauth/glauth.git
synced 2026-10-25 13:40:48 +00:00
e7195ed983
Co-authored-by: Jörn Friedrich Dreyer <jfd@butonic.de> Co-authored-by: Zhou Wenzong <wenzong@users.noreply.github.com> Co-authored-by: Jairo Llopis <Yajo@users.noreply.github.com> Co-authored-by: Benedikt Kulmann <benedikt@kulmann.biz> Co-authored-by: Nicolai Willems <172633+nwillems@users.noreply.github.com> Co-authored-by: Thibault Soubiran <soubi.thibault@gmail.com> Co-authored-by: Clement JACOB <clems71@gmail.com> Co-authored-by: Lutz Horn <code@lhorn.de> Co-authored-by: Márk Sági-Kazár <sagikazarmark@users.noreply.github.com> Co-authored-by: Peter Heise <pheise@koprolalie.com> Co-authored-by: Ben Yanke <ben@benyanke.com> Co-authored-by: fanlix <fanlix@gmail.com> Co-authored-by: Hank Donnay <hdonnay@gmail.com>
59 lines
1.7 KiB
Go
59 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
|
|
_ "github.com/lib/pq"
|
|
|
|
"github.com/glauth/glauth/pkg/handler"
|
|
)
|
|
|
|
type PostgresBackend struct {
|
|
}
|
|
|
|
func NewPostgresHandler(opts ...handler.Option) handler.Handler {
|
|
backend := PostgresBackend{}
|
|
return NewDatabaseHandler(backend, opts...)
|
|
}
|
|
|
|
func (b PostgresBackend) GetDriverName() string {
|
|
return "postgres"
|
|
}
|
|
|
|
func (b PostgresBackend) GetPrepareSymbol() string {
|
|
return "$1"
|
|
}
|
|
|
|
// Create db/schema if necessary
|
|
func (b PostgresBackend) CreateSchema(db *sql.DB) {
|
|
statement, _ := db.Prepare(`
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id SERIAL PRIMARY KEY,
|
|
name TEXT NOT NULL,
|
|
uidnumber INTEGER NOT NULL,
|
|
primarygroup INTEGER NOT NULL,
|
|
othergroups TEXT DEFAULT '',
|
|
givenname TEXT DEFAULT '',
|
|
sn TEXT DEFAULT '',
|
|
mail TEXT DEFAULT '',
|
|
loginshell TEXT DEFAULT '',
|
|
homedirectory TEXT DEFAULT '',
|
|
disabled SMALLINT DEFAULT 0,
|
|
passsha256 TEXT DEFAULT '',
|
|
passbcrypt TEXT DEFAULT '',
|
|
otpsecret TEXT DEFAULT '',
|
|
yubikey TEXT DEFAULT '')
|
|
`)
|
|
statement.Exec()
|
|
statement, _ = db.Prepare("CREATE UNIQUE INDEX IF NOT EXISTS idx_user_name on users(name)")
|
|
statement.Exec()
|
|
statement, _ = db.Prepare("CREATE TABLE IF NOT EXISTS groups (id SERIAL PRIMARY KEY, name TEXT NOT NULL, gidnumber INTEGER NOT NULL)")
|
|
statement.Exec()
|
|
statement, _ = db.Prepare("CREATE UNIQUE INDEX IF NOT EXISTS idx_group_name on groups(name)")
|
|
statement.Exec()
|
|
statement, _ = db.Prepare("CREATE TABLE IF NOT EXISTS includegroups (id SERIAL PRIMARY KEY, parentgroupid INTEGER NOT NULL, includegroupid INTEGER NOT NULL)")
|
|
statement.Exec()
|
|
statement, _ = db.Prepare("CREATE TABLE IF NOT EXISTS capabilities (id SERIAL PRIMARY KEY, userid INTEGER NOT NULL, action TEXT NOT NULL, object TEXT NOT NULL)")
|
|
statement.Exec()
|
|
}
|