mirror of
https://github.com/hay-kot/homebox.git
synced 2024-12-19 05:26:31 +00:00
feat: allow disable registration (#71)
This commit is contained in:
parent
ba8367f637
commit
dea2dcfde8
6 changed files with 36 additions and 12 deletions
|
@ -44,6 +44,7 @@ func (a *app) newRouter(repos *repo.AllRepos) *chi.Mux {
|
||||||
v1Base := v1.BaseUrlFunc(prefix)
|
v1Base := v1.BaseUrlFunc(prefix)
|
||||||
v1Ctrl := v1.NewControllerV1(a.services,
|
v1Ctrl := v1.NewControllerV1(a.services,
|
||||||
v1.WithMaxUploadSize(a.conf.Web.MaxUploadSize),
|
v1.WithMaxUploadSize(a.conf.Web.MaxUploadSize),
|
||||||
|
v1.WithRegistration(a.conf.AllowRegistration),
|
||||||
v1.WithDemoStatus(a.conf.Demo), // Disable Password Change in Demo Mode
|
v1.WithDemoStatus(a.conf.Demo), // Disable Password Change in Demo Mode
|
||||||
)
|
)
|
||||||
r.Get(v1Base("/status"), v1Ctrl.HandleBase(func() bool { return true }, v1.Build{
|
r.Get(v1Base("/status"), v1Ctrl.HandleBase(func() bool { return true }, v1.Build{
|
||||||
|
|
|
@ -19,10 +19,17 @@ func WithDemoStatus(demoStatus bool) func(*V1Controller) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func WithRegistration(allowRegistration bool) func(*V1Controller) {
|
||||||
|
return func(ctrl *V1Controller) {
|
||||||
|
ctrl.allowRegistration = allowRegistration
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type V1Controller struct {
|
type V1Controller struct {
|
||||||
svc *services.AllServices
|
svc *services.AllServices
|
||||||
maxUploadSize int64
|
maxUploadSize int64
|
||||||
isDemo bool
|
isDemo bool
|
||||||
|
allowRegistration bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type (
|
type (
|
||||||
|
@ -53,7 +60,8 @@ func BaseUrlFunc(prefix string) func(s string) string {
|
||||||
|
|
||||||
func NewControllerV1(svc *services.AllServices, options ...func(*V1Controller)) *V1Controller {
|
func NewControllerV1(svc *services.AllServices, options ...func(*V1Controller)) *V1Controller {
|
||||||
ctrl := &V1Controller{
|
ctrl := &V1Controller{
|
||||||
svc: svc,
|
svc: svc,
|
||||||
|
allowRegistration: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, opt := range options {
|
for _, opt := range options {
|
||||||
|
|
|
@ -27,6 +27,11 @@ func (ctrl *V1Controller) HandleUserRegistration() http.HandlerFunc {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !ctrl.allowRegistration && regData.GroupToken == "" {
|
||||||
|
server.RespondError(w, http.StatusForbidden, nil)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
_, err := ctrl.svc.User.RegisterUser(r.Context(), regData)
|
_, err := ctrl.svc.User.RegisterUser(r.Context(), regData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Err(err).Msg("failed to register user")
|
log.Err(err).Msg("failed to register user")
|
||||||
|
|
|
@ -16,13 +16,14 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Mode string `yaml:"mode" conf:"default:development"` // development or production
|
Mode string `yaml:"mode" conf:"default:development"` // development or production
|
||||||
Web WebConfig `yaml:"web"`
|
Web WebConfig `yaml:"web"`
|
||||||
Storage Storage `yaml:"storage"`
|
Storage Storage `yaml:"storage"`
|
||||||
Log LoggerConf `yaml:"logger"`
|
Log LoggerConf `yaml:"logger"`
|
||||||
Mailer MailerConf `yaml:"mailer"`
|
Mailer MailerConf `yaml:"mailer"`
|
||||||
Swagger SwaggerConf `yaml:"swagger"`
|
Swagger SwaggerConf `yaml:"swagger"`
|
||||||
Demo bool `yaml:"demo"`
|
Demo bool `yaml:"demo"`
|
||||||
|
AllowRegistration bool `yaml:"disable_registration" conf:"default:true"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type SwaggerConf struct {
|
type SwaggerConf struct {
|
||||||
|
|
|
@ -42,9 +42,10 @@ volumes:
|
||||||
| HBOX_MODE | production | application mode used for runtime behavior can be one of: development, production |
|
| HBOX_MODE | production | application mode used for runtime behavior can be one of: development, production |
|
||||||
| HBOX_WEB_PORT | 7745 | port to run the web server on, in you're using docker do not change this |
|
| HBOX_WEB_PORT | 7745 | port to run the web server on, in you're using docker do not change this |
|
||||||
| HBOX_WEB_HOST | | host to run the web server on, in you're using docker do not change this |
|
| HBOX_WEB_HOST | | host to run the web server on, in you're using docker do not change this |
|
||||||
|
| HBOX_ALLOW_REGISTRATION | true | allow users to register themselves |
|
||||||
|
| HBOX_WEB_MAX_UPLOAD_SIZE | 10 | maximum file upload size supported in MB |
|
||||||
| HBOX_STORAGE_DATA | /data/ | path to the data directory, do not change this if you're using docker |
|
| HBOX_STORAGE_DATA | /data/ | path to the data directory, do not change this if you're using docker |
|
||||||
| HBOX_STORAGE_SQLITE_URL | /data/homebox.db?_fk=1 | sqlite database url, in you're using docker do not change this |
|
| HBOX_STORAGE_SQLITE_URL | /data/homebox.db?_fk=1 | sqlite database url, in you're using docker do not change this |
|
||||||
| HBOX_WEB_MAX_UPLOAD_SIZE | 10 | maximum file upload size supported in MB |
|
|
||||||
| HBOX_LOG_LEVEL | info | log level to use, can be one of: trace, debug, info, warn, error, critical |
|
| HBOX_LOG_LEVEL | info | log level to use, can be one of: trace, debug, info, warn, error, critical |
|
||||||
| HBOX_LOG_FORMAT | text | log format to use, can be one of: text, json |
|
| HBOX_LOG_FORMAT | text | log format to use, can be one of: text, json |
|
||||||
| HBOX_MAILER_HOST | | email host to use, if not set no email provider will be used |
|
| HBOX_MAILER_HOST | | email host to use, if not set no email provider will be used |
|
||||||
|
@ -77,6 +78,8 @@ volumes:
|
||||||
--mailer-from/$HBOX_MAILER_FROM <string>
|
--mailer-from/$HBOX_MAILER_FROM <string>
|
||||||
--swagger-host/$HBOX_SWAGGER_HOST <string> (default: localhost:7745)
|
--swagger-host/$HBOX_SWAGGER_HOST <string> (default: localhost:7745)
|
||||||
--swagger-scheme/$HBOX_SWAGGER_SCHEME <string> (default: http)
|
--swagger-scheme/$HBOX_SWAGGER_SCHEME <string> (default: http)
|
||||||
|
--demo/$HBOX_DEMO <bool>
|
||||||
|
--allow-registration/$HBOX_ALLOW_REGISTRATION <bool> (default: true)
|
||||||
--help/-h
|
--help/-h
|
||||||
display this help message
|
display this help message
|
||||||
```
|
```
|
|
@ -187,6 +187,12 @@ export interface LocationSummary {
|
||||||
updatedAt: Date;
|
updatedAt: Date;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface PaginationResultRepoItemSummary {
|
||||||
|
items: ItemSummary[];
|
||||||
|
page: number;
|
||||||
|
pageSize: number;
|
||||||
|
total: number;
|
||||||
|
}
|
||||||
|
|
||||||
export interface UserOut {
|
export interface UserOut {
|
||||||
email: string;
|
email: string;
|
||||||
|
|
Loading…
Reference in a new issue