mirror of
https://github.com/glauth/glauth.git
synced 2026-10-25 21:49:50 +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.8 KiB
Go
59 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
|
|
_ "github.com/go-sql-driver/mysql"
|
|
|
|
"github.com/glauth/glauth/pkg/handler"
|
|
)
|
|
|
|
type MysqlBackend struct {
|
|
}
|
|
|
|
func NewMySQLHandler(opts ...handler.Option) handler.Handler {
|
|
backend := MysqlBackend{}
|
|
return NewDatabaseHandler(backend, opts...)
|
|
}
|
|
|
|
func (b MysqlBackend) GetDriverName() string {
|
|
return "mysql"
|
|
}
|
|
|
|
func (b MysqlBackend) GetPrepareSymbol() string {
|
|
return "?"
|
|
}
|
|
|
|
// Create db/schema if necessary
|
|
func (b MysqlBackend) CreateSchema(db *sql.DB) {
|
|
statement, _ := db.Prepare(`
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id INTEGER AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(64) NOT NULL,
|
|
uidnumber INTEGER NOT NULL,
|
|
primarygroup INTEGER NOT NULL,
|
|
othergroups VARCHAR(1024) DEFAULT '',
|
|
givenname VARCHAR(64) DEFAULT '',
|
|
sn VARCHAR(64) DEFAULT '',
|
|
mail VARCHAR(254) DEFAULT '',
|
|
loginshell VARCHAR(64) DEFAULT '',
|
|
homedirectory VARCHAR(64) DEFAULT '',
|
|
disabled SMALLINT DEFAULT 0,
|
|
passsha256 VARCHAR(64) DEFAULT '',
|
|
passbcrypt VARCHAR(64) DEFAULT '',
|
|
otpsecret VARCHAR(64) DEFAULT '',
|
|
yubikey VARCHAR(128) DEFAULT '')
|
|
`)
|
|
statement.Exec()
|
|
statement, _ = db.Prepare("CREATE UNIQUE INDEX idx_user_name on users(name)")
|
|
statement.Exec()
|
|
statement, _ = db.Prepare("CREATE TABLE IF NOT EXISTS groups (id INTEGER AUTO_INCREMENT PRIMARY KEY, name VARCHAR(64) NOT NULL, gidnumber INTEGER NOT NULL)")
|
|
statement.Exec()
|
|
statement, _ = db.Prepare("CREATE UNIQUE INDEX idx_group_name on groups(name)")
|
|
statement.Exec()
|
|
statement, _ = db.Prepare("CREATE TABLE IF NOT EXISTS includegroups (id INTEGER AUTO_INCREMENT PRIMARY KEY, parentgroupid INTEGER NOT NULL, includegroupid INTEGER NOT NULL)")
|
|
statement.Exec()
|
|
statement, _ = db.Prepare("CREATE TABLE IF NOT EXISTS capabilities (id INTEGER AUTO_INCREMENT PRIMARY KEY, userid INTEGER NOT NULL, action VARCHAR(128) NOT NULL, object VARCHAR(128) NOT NULL)")
|
|
statement.Exec()
|
|
}
|