Skip to content

Commit b3a52c2

Browse files
authored
feat: allow admin to user profile (#51)
Resolves #49
1 parent 1ba53e2 commit b3a52c2

File tree

7 files changed

+319
-4
lines changed

7 files changed

+319
-4
lines changed

server/db/db.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ type Manager interface {
1717
UpdateUser(user User) (User, error)
1818
GetUsers() ([]User, error)
1919
GetUserByEmail(email string) (User, error)
20+
GetUserByID(email string) (User, error)
2021
UpdateVerificationTime(verifiedAt int64, id uint) error
2122
AddVerification(verification VerificationRequest) (VerificationRequest, error)
2223
GetVerificationByToken(token string) (VerificationRequest, error)

server/db/user.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package db
22

33
import (
44
"log"
5+
"time"
56

67
"gorm.io/gorm/clause"
78
)
@@ -37,6 +38,7 @@ func (mgr *manager) SaveUser(user User) (User, error) {
3738

3839
// UpdateUser function to update user with ID conflict
3940
func (mgr *manager) UpdateUser(user User) (User, error) {
41+
user.UpdatedAt = time.Now().Unix()
4042
result := mgr.db.Clauses(
4143
clause.OnConflict{
4244
UpdateAll: true,
@@ -72,6 +74,17 @@ func (mgr *manager) GetUserByEmail(email string) (User, error) {
7274
return user, nil
7375
}
7476

77+
func (mgr *manager) GetUserByID(id string) (User, error) {
78+
var user User
79+
result := mgr.db.Where("id = ?", id).First(&user)
80+
81+
if result.Error != nil {
82+
return user, result.Error
83+
}
84+
85+
return user, nil
86+
}
87+
7588
func (mgr *manager) UpdateVerificationTime(verifiedAt int64, id uint) error {
7689
user := &User{
7790
ID: id,

server/graph/generated/generated.go

Lines changed: 151 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/graph/model/models_gen.go

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/graph/schema.graphqls

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,15 @@ input UpdateProfileInput {
8989
# roles: [String]
9090
}
9191

92+
input AdminUpdateUserInput {
93+
id: ID!
94+
email: String
95+
firstName: String
96+
lastName: String
97+
image: String
98+
roles: [String]
99+
}
100+
92101
input ForgotPasswordInput {
93102
email: String!
94103
}
@@ -108,6 +117,7 @@ type Mutation {
108117
login(params: LoginInput!): AuthResponse!
109118
logout: Response!
110119
updateProfile(params: UpdateProfileInput!): Response!
120+
adminUpdateUser(params: AdminUpdateUserInput!): User!
111121
verifyEmail(params: VerifyEmailInput!): AuthResponse!
112122
resendVerifyEmail(params: ResendVerifyEmailInput!): Response!
113123
forgotPassword(params: ForgotPasswordInput!): Response!

server/graph/schema.resolvers.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ func (r *mutationResolver) UpdateProfile(ctx context.Context, params model.Updat
2727
return resolvers.UpdateProfile(ctx, params)
2828
}
2929

30+
func (r *mutationResolver) AdminUpdateUser(ctx context.Context, params model.AdminUpdateUserInput) (*model.User, error) {
31+
return resolvers.AdminUpdateUser(ctx, params)
32+
}
33+
3034
func (r *mutationResolver) VerifyEmail(ctx context.Context, params model.VerifyEmailInput) (*model.AuthResponse, error) {
3135
return resolvers.VerifyEmail(ctx, params)
3236
}
@@ -73,7 +77,5 @@ func (r *Resolver) Mutation() generated.MutationResolver { return &mutationResol
7377
// Query returns generated.QueryResolver implementation.
7478
func (r *Resolver) Query() generated.QueryResolver { return &queryResolver{r} }
7579

76-
type (
77-
mutationResolver struct{ *Resolver }
78-
queryResolver struct{ *Resolver }
79-
)
80+
type mutationResolver struct{ *Resolver }
81+
type queryResolver struct{ *Resolver }

0 commit comments

Comments
 (0)