mirror of
https://github.com/h44z/wg-portal.git
synced 2025-06-28 09:17:00 +00:00
fix user creation (#411)
This commit is contained in:
parent
9354a1d9d3
commit
e2966d32ea
@ -389,12 +389,14 @@ func (m Manager) validateCreation(ctx context.Context, new *domain.User) error {
|
|||||||
return fmt.Errorf("reserved user identifier: %w", domain.ErrInvalidData)
|
return fmt.Errorf("reserved user identifier: %w", domain.ErrInvalidData)
|
||||||
}
|
}
|
||||||
|
|
||||||
if new.Source != domain.UserSourceDatabase {
|
// Admins are allowed to create users for arbitrary sources.
|
||||||
|
if new.Source != domain.UserSourceDatabase && !currentUser.IsAdmin {
|
||||||
return fmt.Errorf("invalid user source: %s, only %s is allowed: %w",
|
return fmt.Errorf("invalid user source: %s, only %s is allowed: %w",
|
||||||
new.Source, domain.UserSourceDatabase, domain.ErrInvalidData)
|
new.Source, domain.UserSourceDatabase, domain.ErrInvalidData)
|
||||||
}
|
}
|
||||||
|
|
||||||
if string(new.Password) == "" {
|
// database users must have a password
|
||||||
|
if new.Source == domain.UserSourceDatabase && string(new.Password) == "" {
|
||||||
return fmt.Errorf("invalid password: %w", domain.ErrInvalidData)
|
return fmt.Errorf("invalid password: %w", domain.ErrInvalidData)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -430,6 +432,8 @@ func (m Manager) validateApiChange(ctx context.Context, user *domain.User) error
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m Manager) runLdapSynchronizationService(ctx context.Context) {
|
func (m Manager) runLdapSynchronizationService(ctx context.Context) {
|
||||||
|
ctx = domain.SetUserInfo(ctx, domain.LdapSyncContextUserInfo()) // switch to service context for LDAP sync
|
||||||
|
|
||||||
for _, ldapCfg := range m.cfg.Auth.Ldap { // LDAP Auth providers
|
for _, ldapCfg := range m.cfg.Auth.Ldap { // LDAP Auth providers
|
||||||
go func(cfg config.LdapProvider) {
|
go func(cfg config.LdapProvider) {
|
||||||
syncInterval := cfg.SyncInterval
|
syncInterval := cfg.SyncInterval
|
||||||
|
@ -45,6 +45,14 @@ func SystemAdminContextUserInfo() *ContextUserInfo {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LdapSyncContextUserInfo returns a context user info for the LDAP syncer.
|
||||||
|
func LdapSyncContextUserInfo() *ContextUserInfo {
|
||||||
|
return &ContextUserInfo{
|
||||||
|
Id: CtxSystemLdapSyncer,
|
||||||
|
IsAdmin: true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// SetUserInfo sets the user info in the context.
|
// SetUserInfo sets the user info in the context.
|
||||||
func SetUserInfo(ctx context.Context, info *ContextUserInfo) context.Context {
|
func SetUserInfo(ctx context.Context, info *ContextUserInfo) context.Context {
|
||||||
ctx = context.WithValue(ctx, CtxUserInfo, info)
|
ctx = context.WithValue(ctx, CtxUserInfo, info)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user