mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-06 05:04:27 +08:00
* feat: api access tokens * revoke all user tokens * redefine access token api routes, add auto egress option to enrollment keys * fix revoked tokens to be unauthorized * remove unused functions * convert access token to sql schema * switch access token to sql schema * revoke token generated by an user * add user token creation restriction by user role * add forbidden check for access token creation * revoke user token when group or role is changed * add default group to admin users on update * fix token removal on user update * fix token removal on user update
41 lines
859 B
Go
41 lines
859 B
Go
package db
|
|
|
|
import (
|
|
"errors"
|
|
"os"
|
|
|
|
"github.com/gravitl/netmaker/config"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
var ErrUnsupportedDB = errors.New("unsupported db type")
|
|
|
|
// connector helps connect to a database,
|
|
// along with any initializations required.
|
|
type connector interface {
|
|
connect() (*gorm.DB, error)
|
|
}
|
|
|
|
// GetDB - gets the database type
|
|
func GetDB() string {
|
|
database := "sqlite"
|
|
if os.Getenv("DATABASE") != "" {
|
|
database = os.Getenv("DATABASE")
|
|
} else if config.Config.Server.Database != "" {
|
|
database = config.Config.Server.Database
|
|
}
|
|
return database
|
|
}
|
|
|
|
// newConnector detects the database being
|
|
// used and returns the corresponding connector.
|
|
func newConnector() (connector, error) {
|
|
switch GetDB() {
|
|
case "sqlite":
|
|
return &sqliteConnector{}, nil
|
|
case "postgres":
|
|
return &postgresConnector{}, nil
|
|
default:
|
|
return nil, ErrUnsupportedDB
|
|
}
|
|
}
|