mirror of
https://github.com/passbolt/go-passbolt.git
synced 2025-05-09 17:48:20 +00:00
add user helper functions
This commit is contained in:
parent
6bb4283e5e
commit
815df3e9f3
1 changed files with 102 additions and 0 deletions
102
helper/user.go
Normal file
102
helper/user.go
Normal file
|
@ -0,0 +1,102 @@
|
|||
package helper
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/speatzle/go-passbolt/api"
|
||||
)
|
||||
|
||||
// CreateUser Creates a new User
|
||||
func CreateUser(ctx context.Context, c *api.Client, role, username, firstname, lastname string) (string, error) {
|
||||
roles, err := c.GetRoles(ctx)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("Get Role: %w", err)
|
||||
}
|
||||
|
||||
roleID := ""
|
||||
|
||||
for _, r := range roles {
|
||||
if r.Name == role {
|
||||
roleID = r.ID
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if roleID == "" {
|
||||
return "", fmt.Errorf("Cannot Find Role %v", role)
|
||||
}
|
||||
|
||||
u, err := c.CreateUser(ctx, api.User{
|
||||
Username: username,
|
||||
Profile: &api.Profile{
|
||||
FirstName: firstname,
|
||||
LastName: lastname,
|
||||
},
|
||||
RoleID: roleID,
|
||||
})
|
||||
return u.ID, err
|
||||
}
|
||||
|
||||
// GetUser Gets a User
|
||||
func GetUser(ctx context.Context, c *api.Client, userID string) (string, string, string, string, error) {
|
||||
u, err := c.GetUser(ctx, userID)
|
||||
if err != nil {
|
||||
return "", "", "", "", fmt.Errorf("Get User %w", err)
|
||||
}
|
||||
return u.Username, u.Profile.FirstName, u.Profile.LastName, u.Role.Name, nil
|
||||
}
|
||||
|
||||
// UpdateUser Updates a User
|
||||
func UpdateUser(ctx context.Context, c *api.Client, userID, role, firstname, lastname string) error {
|
||||
user, err := c.GetUser(ctx, userID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Get User %w", err)
|
||||
}
|
||||
|
||||
new := api.User{
|
||||
Profile: &api.Profile{
|
||||
FirstName: user.Profile.FirstName,
|
||||
LastName: user.Profile.LastName,
|
||||
},
|
||||
}
|
||||
|
||||
if role != "" {
|
||||
roles, err := c.GetRoles(ctx)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Get Role: %w", err)
|
||||
}
|
||||
|
||||
roleID := ""
|
||||
|
||||
for _, r := range roles {
|
||||
if r.Name == role {
|
||||
roleID = r.ID
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if roleID == "" {
|
||||
return fmt.Errorf("Cannot Find Role %v", role)
|
||||
}
|
||||
user.RoleID = roleID
|
||||
}
|
||||
|
||||
if firstname != "" {
|
||||
new.Profile.FirstName = firstname
|
||||
}
|
||||
if lastname != "" {
|
||||
new.Profile.LastName = lastname
|
||||
}
|
||||
|
||||
_, err = c.UpdateUser(ctx, userID, new)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Updating User: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeleteUser Deletes a User
|
||||
func DeleteUser(ctx context.Context, c *api.Client, userID string) error {
|
||||
return c.DeleteUser(ctx, userID)
|
||||
}
|
Loading…
Add table
Reference in a new issue