mirror of
https://github.com/glauth/glauth.git
synced 2026-10-25 13:40:48 +00:00
57 lines
1.5 KiB
Go
57 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
|
|
_ "github.com/mattn/go-sqlite3"
|
|
|
|
"github.com/glauth/glauth/pkg/handler"
|
|
)
|
|
|
|
type SqliteBackend struct {
|
|
}
|
|
|
|
func NewSQLiteHandler(opts ...handler.Option) handler.Handler {
|
|
backend := SqliteBackend{}
|
|
return NewDatabaseHandler(backend, opts...)
|
|
}
|
|
|
|
func (b SqliteBackend) GetDriverName() string {
|
|
return "sqlite3"
|
|
}
|
|
|
|
func (b SqliteBackend) GetPrepareSymbol() string {
|
|
return "?"
|
|
}
|
|
|
|
// Create db/schema if necessary
|
|
func (b SqliteBackend) CreateSchema(db *sql.DB) {
|
|
statement, _ := db.Prepare(`
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id INTEGER PRIMARY KEY,
|
|
name TEXT NOT NULL,
|
|
unixid INTEGER NOT NULL,
|
|
primarygroup INTEGER NOT NULL,
|
|
othergroups TEXT DEFAULT '',
|
|
givenname TEXT DEFAULT '',
|
|
sn TEXT DEFAULT '',
|
|
mail TEXT DEFAULT '',
|
|
loginshell TYEXT 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 INTEGER PRIMARY KEY, name TEXT NOT NULL, unixid 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 INTEGER PRIMARY KEY, parentgroupid INTEGER NOT NULL, includegroupid INTEGER NOT NULL)")
|
|
statement.Exec()
|
|
}
|