netmaker/db/connector.go
Abhishek K ca95954fb5
NET-2000: Api access tokens (#3418)
* 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
2025-04-23 20:21:42 +04:00

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
}
}