Add a configuration to disable signing up
This commit is contained in:
@@ -11,24 +11,26 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Port string `toml:"port" default:"8080" comment:"The port to listen on for the server."`
|
Port string `toml:"port" default:"8080" comment:"The port to listen on for the server."`
|
||||||
DatabaseFilePath string `toml:"database-file-path" default:"plm.db" comment:"Path to sqlite database file."`
|
DatabaseFilePath string `toml:"database-file-path" default:"plm.db" comment:"Path to sqlite database file."`
|
||||||
DemoDataPath string `toml:"demo-data-path" comment:"The path to the sql file to load for demo data."`
|
DemoDataPath string `toml:"demo-data-path" comment:"The path to the sql file to load for demo data."`
|
||||||
JWTKey string `toml:"jwt-key" comment:"The key used to encrypt the generated JWT. Encoded in base64. If empty a random one will be generated on every restart."`
|
JWTKey string `toml:"jwt-key" comment:"The key used to encrypt the generated JWT. Encoded in base64. If empty a random one will be generated on every restart."`
|
||||||
ImageFolderPath string `toml:"image-folder-path" default:"img" comment:"Folder where uploaded files will be stored."`
|
ImageFolderPath string `toml:"image-folder-path" default:"img" comment:"Folder where uploaded files will be stored."`
|
||||||
Limit int `toml:"limit" default:"100" comment:"A single API call will return at most this number of records."`
|
Limit int `toml:"limit" default:"100" comment:"A single API call will return at most this number of records."`
|
||||||
InventaireUrl string `toml:"inventaire-url" default:"https://inventaire.io" comment:"An inventaire.io instance URL."`
|
InventaireUrl string `toml:"inventaire-url" default:"https://inventaire.io" comment:"An inventaire.io instance URL."`
|
||||||
|
DisableRegistration bool `toml:"disable-registration" default:"false" comment:"Disable new account creation."`
|
||||||
}
|
}
|
||||||
|
|
||||||
func defaultConfig() Config {
|
func defaultConfig() Config {
|
||||||
return Config{
|
return Config{
|
||||||
Port: "8080",
|
Port: "8080",
|
||||||
DatabaseFilePath: "plm.db",
|
DatabaseFilePath: "plm.db",
|
||||||
DemoDataPath: "",
|
DemoDataPath: "",
|
||||||
JWTKey: "",
|
JWTKey: "",
|
||||||
ImageFolderPath: "img",
|
ImageFolderPath: "img",
|
||||||
Limit: 100,
|
Limit: 100,
|
||||||
InventaireUrl: "https://inventaire.io",
|
InventaireUrl: "https://inventaire.io",
|
||||||
|
DisableRegistration: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ func ReturnErrorsAsJsonResponse(ac *appcontext.AppContext, err error) {
|
|||||||
if errors.As(err, &ve) {
|
if errors.As(err, &ve) {
|
||||||
ac.C.JSON(http.StatusBadRequest, getValidationErrors(ac, &ve))
|
ac.C.JSON(http.StatusBadRequest, getValidationErrors(ac, &ve))
|
||||||
} else if errors.As(err, &httpError) {
|
} else if errors.As(err, &httpError) {
|
||||||
ac.C.JSON(httpError.StatusCode, gin.H{"error": httpError.Err})
|
ac.C.JSON(httpError.StatusCode, gin.H{"error": httpError.Err.Error()})
|
||||||
} else {
|
} else {
|
||||||
ac.C.JSON(http.StatusInternalServerError, gin.H{"error": err})
|
ac.C.JSON(http.StatusInternalServerError, gin.H{"error": err})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
package routes
|
package routes
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
"git.artlef.fr/PersonalLibraryManager/internal/appcontext"
|
"git.artlef.fr/PersonalLibraryManager/internal/appcontext"
|
||||||
"git.artlef.fr/PersonalLibraryManager/internal/dto"
|
"git.artlef.fr/PersonalLibraryManager/internal/dto"
|
||||||
"git.artlef.fr/PersonalLibraryManager/internal/model"
|
"git.artlef.fr/PersonalLibraryManager/internal/model"
|
||||||
@@ -9,6 +12,14 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func PostSignupHandler(ac appcontext.AppContext) {
|
func PostSignupHandler(ac appcontext.AppContext) {
|
||||||
|
if ac.Config.DisableRegistration {
|
||||||
|
myvalidator.ReturnErrorsAsJsonResponse(&ac,
|
||||||
|
myvalidator.HttpError{
|
||||||
|
StatusCode: http.StatusForbidden,
|
||||||
|
Err: errors.New("Registration has been disabled on this instance."),
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
var user dto.UserSignup
|
var user dto.UserSignup
|
||||||
err := ac.C.ShouldBindJSON(&user)
|
err := ac.C.ShouldBindJSON(&user)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user