mirror of
https://github.com/h44z/wg-portal.git
synced 2025-09-15 07:11:15 +00:00
add simple webhook feature for peer, interface and user events (#398)
This commit is contained in:
@@ -77,47 +77,12 @@ func (m Manager) RegisterUser(ctx context.Context, user *domain.User) error {
|
||||
return err
|
||||
}
|
||||
|
||||
err := m.NewUser(ctx, user)
|
||||
createdUser, err := m.CreateUser(ctx, user)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
m.bus.Publish(app.TopicUserRegistered, user)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// NewUser creates a new user.
|
||||
func (m Manager) NewUser(ctx context.Context, user *domain.User) error {
|
||||
if user.Identifier == "" {
|
||||
return errors.New("missing user identifier")
|
||||
}
|
||||
|
||||
if err := domain.ValidateAdminAccessRights(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err := m.users.SaveUser(ctx, user.Identifier, func(u *domain.User) (*domain.User, error) {
|
||||
u.Identifier = user.Identifier
|
||||
u.Email = user.Email
|
||||
u.Source = user.Source
|
||||
u.ProviderName = user.ProviderName
|
||||
u.IsAdmin = user.IsAdmin
|
||||
u.Firstname = user.Firstname
|
||||
u.Lastname = user.Lastname
|
||||
u.Phone = user.Phone
|
||||
u.Department = user.Department
|
||||
u.Notes = user.Notes
|
||||
u.ApiToken = user.ApiToken
|
||||
u.ApiTokenCreated = user.ApiTokenCreated
|
||||
|
||||
return u, nil
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to save user: %w", err)
|
||||
}
|
||||
|
||||
m.bus.Publish(app.TopicUserCreated, user)
|
||||
m.bus.Publish(app.TopicUserRegistered, createdUser)
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -229,6 +194,8 @@ func (m Manager) UpdateUser(ctx context.Context, user *domain.User) (*domain.Use
|
||||
return nil, fmt.Errorf("update failure: %w", err)
|
||||
}
|
||||
|
||||
m.bus.Publish(app.TopicUserUpdated, *user)
|
||||
|
||||
switch {
|
||||
case !existingUser.IsDisabled() && user.IsDisabled():
|
||||
m.bus.Publish(app.TopicUserDisabled, *user)
|
||||
@@ -241,6 +208,10 @@ func (m Manager) UpdateUser(ctx context.Context, user *domain.User) (*domain.Use
|
||||
|
||||
// CreateUser creates a new user.
|
||||
func (m Manager) CreateUser(ctx context.Context, user *domain.User) (*domain.User, error) {
|
||||
if user.Identifier == "" {
|
||||
return nil, errors.New("missing user identifier")
|
||||
}
|
||||
|
||||
if err := domain.ValidateAdminAccessRights(ctx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -270,6 +241,8 @@ func (m Manager) CreateUser(ctx context.Context, user *domain.User) (*domain.Use
|
||||
return nil, fmt.Errorf("creation failure: %w", err)
|
||||
}
|
||||
|
||||
m.bus.Publish(app.TopicUserCreated, *user)
|
||||
|
||||
return user, nil
|
||||
}
|
||||
|
||||
@@ -321,6 +294,7 @@ func (m Manager) ActivateApi(ctx context.Context, id domain.UserIdentifier) (*do
|
||||
return nil, fmt.Errorf("update failure: %w", err)
|
||||
}
|
||||
|
||||
m.bus.Publish(app.TopicUserUpdated, user)
|
||||
m.bus.Publish(app.TopicUserApiEnabled, user)
|
||||
|
||||
return user, nil
|
||||
@@ -348,6 +322,7 @@ func (m Manager) DeactivateApi(ctx context.Context, id domain.UserIdentifier) (*
|
||||
return nil, fmt.Errorf("update failure: %w", err)
|
||||
}
|
||||
|
||||
m.bus.Publish(app.TopicUserUpdated, user)
|
||||
m.bus.Publish(app.TopicUserApiDisabled, user)
|
||||
|
||||
return user, nil
|
||||
@@ -555,7 +530,7 @@ func (m Manager) updateLdapUsers(
|
||||
// create new user
|
||||
slog.Debug("creating new user from provider", "user", user.Identifier, "provider", provider.ProviderName)
|
||||
|
||||
err := m.NewUser(tctx, user)
|
||||
_, err := m.CreateUser(tctx, user)
|
||||
if err != nil {
|
||||
cancel()
|
||||
return fmt.Errorf("create error for user id %s: %w", user.Identifier, err)
|
||||
|
Reference in New Issue
Block a user