netmaker/db/sqlite.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

55 lines
1 KiB
Go

package db
import (
"os"
"path/filepath"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
// sqliteConnector for initializing and
// connecting to a sqlite database.
type sqliteConnector struct{}
// sqliteConnector.connect connects and
// initializes a connection to sqlite.
func (s *sqliteConnector) connect() (*gorm.DB, error) {
// ensure data dir exists.
_, err := os.Stat("data")
if err != nil {
if os.IsNotExist(err) {
err = os.Mkdir("data", 0700)
if err != nil {
return nil, err
}
} else {
return nil, err
}
}
dbFilePath := filepath.Join("data", "netmaker.db")
// ensure netmaker_v1.db exists.
_, err = os.Stat(dbFilePath)
if err != nil {
if os.IsNotExist(err) {
file, err := os.Create(dbFilePath)
if err != nil {
return nil, err
}
err = file.Close()
if err != nil {
return nil, err
}
} else {
return nil, err
}
}
return gorm.Open(sqlite.Open(dbFilePath), &gorm.Config{
Logger: logger.Default.LogMode(logger.Silent),
})
}