31 lines
679 B
Go
31 lines
679 B
Go
package user
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/jinzhu/copier"
|
|
"github.com/traggo/server/generated/gqlmodel"
|
|
"github.com/traggo/server/model"
|
|
)
|
|
|
|
// UpdateUser updates a user.
|
|
func (r *ResolverForUser) UpdateUser(ctx context.Context, id int, name string, pass *string, admin bool) (*gqlmodel.User, error) {
|
|
user := new(model.User)
|
|
if r.DB.Find(user, id).RecordNotFound() {
|
|
return nil, fmt.Errorf("user with id %d does not exist", id)
|
|
}
|
|
|
|
user.Name = name
|
|
user.Admin = admin
|
|
|
|
if pass != nil {
|
|
user.Pass = createPassword(*pass, r.PassStrength)
|
|
}
|
|
|
|
update := r.DB.Save(user)
|
|
gqlUser := &gqlmodel.User{}
|
|
copier.Copy(gqlUser, user)
|
|
return gqlUser, update.Error
|
|
}
|