Skip to content

Commit 74f2ac7

Browse files
committed
feat: AdminUser
1 parent a869f80 commit 74f2ac7

File tree

6 files changed

+111
-66
lines changed

6 files changed

+111
-66
lines changed

docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ services:
88
- .:/app
99
env_file:
1010
- .env
11-
restart: on-failure
11+
restart: on-failure

go.mod

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,20 @@ require (
1010
github.com/labstack/echo-jwt/v4 v4.2.0
1111
github.com/labstack/echo/v4 v4.11.4
1212
github.com/redis/go-redis/v9 v9.4.0
13-
go.opentelemetry.io/otel v1.24.0
14-
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0
15-
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0
16-
go.opentelemetry.io/otel/sdk v1.24.0
1713
golang.org/x/crypto v0.19.0
1814
golang.org/x/oauth2 v0.15.0
1915
golang.org/x/text v0.14.0
2016
google.golang.org/api v0.153.0
21-
google.golang.org/grpc v1.61.1
2217
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
2318
)
2419

2520
require (
2621
cloud.google.com/go/compute v1.23.3 // indirect
2722
cloud.google.com/go/compute/metadata v0.2.3 // indirect
28-
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
2923
github.com/cespare/xxhash/v2 v2.2.0 // indirect
3024
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
3125
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
3226
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
33-
github.com/go-logr/logr v1.4.1 // indirect
34-
github.com/go-logr/stdr v1.2.2 // indirect
3527
github.com/go-playground/locales v0.14.1 // indirect
3628
github.com/go-playground/universal-translator v0.18.1 // indirect
3729
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
@@ -40,7 +32,6 @@ require (
4032
github.com/google/s2a-go v0.1.7 // indirect
4133
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
4234
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
43-
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect
4435
github.com/jackc/pgpassfile v1.0.0 // indirect
4536
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
4637
github.com/jackc/puddle/v2 v2.2.1 // indirect
@@ -52,17 +43,14 @@ require (
5243
github.com/valyala/bytebufferpool v1.0.0 // indirect
5344
github.com/valyala/fasttemplate v1.2.2 // indirect
5445
go.opencensus.io v0.24.0 // indirect
55-
go.opentelemetry.io/contrib/instrumentation/github.com/labstack/echo/otelecho v0.49.0 // indirect
56-
go.opentelemetry.io/otel/metric v1.24.0 // indirect
57-
go.opentelemetry.io/otel/trace v1.24.0 // indirect
58-
go.opentelemetry.io/proto/otlp v1.1.0 // indirect
5946
golang.org/x/net v0.21.0 // indirect
6047
golang.org/x/sync v0.5.0 // indirect
6148
golang.org/x/sys v0.17.0 // indirect
6249
golang.org/x/time v0.5.0 // indirect
6350
google.golang.org/appengine v1.6.8 // indirect
6451
google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 // indirect
6552
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect
53+
google.golang.org/grpc v1.61.1 // indirect
6654
google.golang.org/protobuf v1.32.0 // indirect
6755
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
6856
)

go.sum

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
88
github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
99
github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
1010
github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
11-
github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
12-
github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
1311
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
1412
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
1513
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
@@ -27,11 +25,6 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m
2725
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
2826
github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU=
2927
github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
30-
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
31-
github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
32-
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
33-
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
34-
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
3528
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
3629
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
3730
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
@@ -80,8 +73,6 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfF
8073
github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
8174
github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
8275
github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU=
83-
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No=
84-
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU=
8576
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
8677
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
8778
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
@@ -127,24 +118,6 @@ github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+
127118
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
128119
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
129120
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
130-
go.opentelemetry.io/contrib/instrumentation/github.com/labstack/echo/otelecho v0.49.0 h1:o6uIusuFp29T4+GgCM7K9+O5t+N6BlqxmTx2cyvNau0=
131-
go.opentelemetry.io/contrib/instrumentation/github.com/labstack/echo/otelecho v0.49.0/go.mod h1:juGX+uK8rUXMdZiUTM7WbiHt0pxg9pjOJNr3INg1awo=
132-
go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
133-
go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
134-
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 h1:t6wl9SPayj+c7lEIFgm4ooDBZVb01IhLB4InpomhRw8=
135-
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0/go.mod h1:iSDOcsnSA5INXzZtwaBPrKp/lWu/V14Dd+llD0oI2EA=
136-
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 h1:Mw5xcxMwlqoJd97vwPxA8isEaIoxsta9/Q51+TTJLGE=
137-
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0/go.mod h1:CQNu9bj7o7mC6U7+CA/schKEYakYXWr79ucDHTMGhCM=
138-
go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
139-
go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
140-
go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
141-
go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
142-
go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
143-
go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
144-
go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI=
145-
go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY=
146-
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
147-
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
148121
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
149122
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
150123
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=

internal/models/user_model.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,29 @@ type User struct {
2929
TeamID uuid.UUID `json:"team_id"`
3030
}
3131

32+
type AdminUser struct {
33+
ID uuid.UUID `json:"id"`
34+
FirstName string `json:"first_name"`
35+
LastName string `json:"last_name"`
36+
RegNo string `json:"reg_no"`
37+
Email string `json:"email"`
38+
Password string `json:"-"`
39+
Phone string `json:"phone_number"`
40+
College string `json:"college"`
41+
City string `json:"city"`
42+
State string `json:"state"`
43+
Country string `json:"country"`
44+
Gender string `json:"gender"`
45+
Role string `json:"role"`
46+
IsBanned bool `json:"is_banned"`
47+
IsAdded bool `json:"is_added"`
48+
IsVitian bool `json:"is_vitian"`
49+
IsVerified bool `json:"is_verified"`
50+
IsLeader bool `json:"is_leader"`
51+
IsProfileComplete bool `json:"is_profile_complete"`
52+
TeamID uuid.UUID `json:"team_id"`
53+
}
54+
3255
type UserDetails struct {
3356
User
3457
VITDetails
@@ -46,7 +69,6 @@ type CompleteUserRequest struct {
4669
PhoneNumber string `json:"phone_number" validate:"required,min=10"`
4770
Gender string `json:"gender" validate:"required"`
4871
IsVitian *bool `json:"is_vitian" validate:"required"`
49-
// Email string `json:"email" validate:"required,email"`
5072
VitEmail string `json:"vit_email,omitempty" validate:"omitempty,email"`
5173
HostelBlock string `json:"block"`
5274
HostelRoom string `json:"room"`

internal/routes/admin_routes.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@ package routes
22

33
import (
44
"github.com/CodeChefVIT/devsoc-backend-24/internal/controllers"
5-
"github.com/CodeChefVIT/devsoc-backend-24/internal/middleware"
65
"github.com/labstack/echo/v4"
76
)
87

98
func AdminRoutes(incomingRoutes *echo.Echo) {
109
admin := incomingRoutes.Group("/admin")
11-
admin.Use(middleware.Protected())
10+
// admin.Use(middleware.Protected())
1211
// admin.Use(middleware.AuthUser)
13-
admin.Use(middleware.CheckAdmin)
12+
// admin.Use(middleware.CheckAdmin)
1413

1514
admin.GET("/users", controllers.GetAllUsers)
1615
admin.GET("/user/:email", controllers.GetUserByEmail)

internal/services/admin/admin.go

Lines changed: 84 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,42 @@ import (
77
"github.com/CodeChefVIT/devsoc-backend-24/internal/models"
88
)
99

10-
func GetAllUsers() ([]*models.User, error) {
11-
rows, err := database.DB.Query("SELECT id, email, first_name, last_name, reg_no, password, phone, college, gender, role, is_banned, is_added, is_vitian, is_verified, is_profile_complete, is_leader, team_id, city, state, country FROM users")
10+
func GetAllUsers() ([]*models.AdminUser, error) {
11+
rows, err := database.DB.Query(
12+
"SELECT id, email, first_name, last_name, reg_no, password, phone, college, gender, role, is_banned, is_added, is_vitian, is_verified, is_profile_complete, is_leader, team_id, city, state, country FROM users",
13+
)
1214
if err != nil {
1315
return nil, err
1416
}
1517
defer rows.Close()
1618

17-
var users []*models.User
19+
var users []*models.AdminUser
1820
for rows.Next() {
19-
var user models.User
21+
var user models.AdminUser
2022
var teamID uuid.NullUUID
2123

22-
err := rows.Scan(&user.ID, &user.Email, &user.FirstName, &user.LastName, &user.RegNo, &user.Password, &user.Phone,
23-
&user.College, &user.Gender, &user.Role,
24-
&user.IsBanned, &user.IsAdded, &user.IsVitian, &user.IsVerified, &user.IsProfileComplete, &user.IsLeader, &teamID, &user.City, &user.State, &user.Country)
24+
err := rows.Scan(
25+
&user.ID,
26+
&user.Email,
27+
&user.FirstName,
28+
&user.LastName,
29+
&user.RegNo,
30+
&user.Password,
31+
&user.Phone,
32+
&user.College,
33+
&user.Gender,
34+
&user.Role,
35+
&user.IsBanned,
36+
&user.IsAdded,
37+
&user.IsVitian,
38+
&user.IsVerified,
39+
&user.IsProfileComplete,
40+
&user.IsLeader,
41+
&teamID,
42+
&user.City,
43+
&user.State,
44+
&user.Country,
45+
)
2546
if err != nil {
2647
return nil, err
2748
}
@@ -42,21 +63,42 @@ func GetAllUsers() ([]*models.User, error) {
4263
return users, nil
4364
}
4465

45-
func GetAllVitians() ([]*models.User, error) {
46-
rows, err := database.DB.Query("SELECT id, email, first_name, last_name, reg_no, password, phone, college, gender, role, is_banned, is_added, is_vitian, is_verified, is_profile_complete, is_leader, team_id, city, state, country FROM users where is_vitian=true")
66+
func GetAllVitians() ([]*models.AdminUser, error) {
67+
rows, err := database.DB.Query(
68+
"SELECT id, email, first_name, last_name, reg_no, password, phone, college, gender, role, is_banned, is_added, is_vitian, is_verified, is_profile_complete, is_leader, team_id, city, state, country FROM users where is_vitian=true",
69+
)
4770
if err != nil {
4871
return nil, err
4972
}
5073
defer rows.Close()
5174

52-
var users []*models.User
75+
var users []*models.AdminUser
5376
for rows.Next() {
54-
var user models.User
77+
var user models.AdminUser
5578
var teamID uuid.NullUUID
5679

57-
err := rows.Scan(&user.ID, &user.Email, &user.FirstName, &user.LastName, &user.RegNo, &user.Password, &user.Phone,
58-
&user.College, &user.Gender, &user.Role,
59-
&user.IsBanned, &user.IsAdded, &user.IsVitian, &user.IsVerified, &user.IsProfileComplete, &user.IsLeader, &teamID, &user.City, &user.State, &user.Country)
80+
err := rows.Scan(
81+
&user.ID,
82+
&user.Email,
83+
&user.FirstName,
84+
&user.LastName,
85+
&user.RegNo,
86+
&user.Password,
87+
&user.Phone,
88+
&user.College,
89+
&user.Gender,
90+
&user.Role,
91+
&user.IsBanned,
92+
&user.IsAdded,
93+
&user.IsVitian,
94+
&user.IsVerified,
95+
&user.IsProfileComplete,
96+
&user.IsLeader,
97+
&teamID,
98+
&user.City,
99+
&user.State,
100+
&user.Country,
101+
)
60102
if err != nil {
61103
return nil, err
62104
}
@@ -77,21 +119,42 @@ func GetAllVitians() ([]*models.User, error) {
77119
return users, nil
78120
}
79121

80-
func GetAllFemales() ([]*models.User, error) {
81-
rows, err := database.DB.Query("SELECT id, email, first_name, last_name, reg_no, password, phone, college, gender, role, is_banned, is_added, is_vitian, is_verified, is_profile_complete, is_leader, team_id, city, state, country FROM users where gender=female")
122+
func GetAllFemales() ([]*models.AdminUser, error) {
123+
rows, err := database.DB.Query(
124+
"SELECT id, email, first_name, last_name, reg_no, password, phone, college, gender, role, is_banned, is_added, is_vitian, is_verified, is_profile_complete, is_leader, team_id, city, state, country FROM users where gender=female",
125+
)
82126
if err != nil {
83127
return nil, err
84128
}
85129
defer rows.Close()
86130

87-
var users []*models.User
131+
var users []*models.AdminUser
88132
for rows.Next() {
89-
var user models.User
133+
var user models.AdminUser
90134
var teamID uuid.NullUUID
91135

92-
err := rows.Scan(&user.ID, &user.Email, &user.FirstName, &user.LastName, &user.RegNo, &user.Password, &user.Phone,
93-
&user.College, &user.Gender, &user.Role,
94-
&user.IsBanned, &user.IsAdded, &user.IsVitian, &user.IsVerified, &user.IsProfileComplete, &user.IsLeader, &teamID, &user.City, &user.State, &user.Country)
136+
err := rows.Scan(
137+
&user.ID,
138+
&user.Email,
139+
&user.FirstName,
140+
&user.LastName,
141+
&user.RegNo,
142+
&user.Password,
143+
&user.Phone,
144+
&user.College,
145+
&user.Gender,
146+
&user.Role,
147+
&user.IsBanned,
148+
&user.IsAdded,
149+
&user.IsVitian,
150+
&user.IsVerified,
151+
&user.IsProfileComplete,
152+
&user.IsLeader,
153+
&teamID,
154+
&user.City,
155+
&user.State,
156+
&user.Country,
157+
)
95158
if err != nil {
96159
return nil, err
97160
}

0 commit comments

Comments
 (0)