Skip to content

Commit

Permalink
feat: add usertype to jwt
Browse files Browse the repository at this point in the history
  • Loading branch information
Bikram-ghuku committed Nov 26, 2024
1 parent 6727ec1 commit 3afe040
Show file tree
Hide file tree
Showing 8 changed files with 20 additions and 19 deletions.
8 changes: 4 additions & 4 deletions controllers/mentor.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ func RegisterMentor(w http.ResponseWriter, r *http.Request) {
}

// Check if the JWT login username is the same as the mentor's given username
login_username := r.Context().Value(middleware.LOGIN_CTX_USERNAME_KEY).(string)
login_username := r.Context().Value(middleware.LOGIN_CTX_USERNAME_KEY).(utils.LoginJwtFields).Username

err = utils.DetectSessionHijackAndRespond(r, w, reqFields.Username, login_username, "Login username and given username do not match.")
if err != nil {
Expand Down Expand Up @@ -225,7 +225,7 @@ func FetchMentorDashboard(w http.ResponseWriter, r *http.Request) {

var modelMentor models.Mentor

login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY))
login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY)).(utils.LoginJwtFields).Username
tx := db.
Table("mentors").
Where("username = ?", login_username).
Expand Down Expand Up @@ -278,7 +278,7 @@ func UpdateMentorDetails(w http.ResponseWriter, r *http.Request) {

var modelMentor models.Mentor

login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY))
login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY)).(utils.LoginJwtFields).Username
tx := db.
Table("mentors").
Where("username = ?", login_username).
Expand Down Expand Up @@ -337,7 +337,7 @@ func GetMentorDetails(w http.ResponseWriter, r *http.Request) {
app := r.Context().Value(middleware.APP_CTX_KEY).(*middleware.App)
db := app.Db

login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY))
login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY)).(utils.LoginJwtFields).Username

mentor := models.Mentor{}
tx := db.
Expand Down
2 changes: 1 addition & 1 deletion controllers/profile.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func FetchProfile(w http.ResponseWriter, r *http.Request) {
app := r.Context().Value(middleware.APP_CTX_KEY).(*middleware.App)
db := app.Db

username := r.Context().Value(middleware.LOGIN_CTX_USERNAME_KEY).(string)
username := r.Context().Value(middleware.LOGIN_CTX_USERNAME_KEY).(utils.LoginJwtFields).Username

// Check if the student already exists in the db
student := models.Student{}
Expand Down
8 changes: 4 additions & 4 deletions controllers/project_fetch.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ func FetchProjectDetails(w http.ResponseWriter, r *http.Request) {
app := r.Context().Value(middleware.APP_CTX_KEY).(*middleware.App)
db := app.Db

login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY))
login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY)).(utils.LoginJwtFields).Username

project := models.Project{}
tx := db.
Expand Down Expand Up @@ -169,10 +169,10 @@ func FetchProjectDetails(w http.ResponseWriter, r *http.Request) {
func OrgFetchAllProjectDetails(w http.ResponseWriter, r *http.Request) {
app := r.Context().Value(middleware.APP_CTX_KEY).(*middleware.App)
db := app.Db
username := r.Context().Value(middleware.LOGIN_CTX_USERNAME_KEY).(string)
user_details := r.Context().Value(middleware.LOGIN_CTX_USERNAME_KEY).(utils.LoginJwtFields)

if !strings.Contains(username, "organiser!") {
utils.LogErrAndRespond(r, w, nil, fmt.Sprintf("Error '%s' is not an organiser", username), 400)
if user_details.UserType != "organiser" {
utils.LogErrAndRespond(r, w, nil, fmt.Sprintf("Error '%s' is not an organiser", user_details.Username), 400)
return
}

Expand Down
4 changes: 2 additions & 2 deletions controllers/project_reg.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,9 @@ func RegisterProject(w http.ResponseWriter, r *http.Request) {
return
}

login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY))
login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY)).(utils.LoginJwtClaims).Username

err = utils.DetectSessionHijackAndRespond(r, w, reqFields.MentorUsername, login_username.(string), "Login username and mentor username do not match.")
err = utils.DetectSessionHijackAndRespond(r, w, reqFields.MentorUsername, login_username, "Login username and mentor username do not match.")
if err != nil {
return
}
Expand Down
4 changes: 2 additions & 2 deletions controllers/project_update.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ func UpdateProject(w http.ResponseWriter, r *http.Request) {
return
}

login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY))
login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY)).(utils.LoginJwtFields).Username

err = utils.DetectSessionHijackAndRespond(r, w, reqFields.MentorUsername, login_username.(string), "Login username and mentor username do not match.")
err = utils.DetectSessionHijackAndRespond(r, w, reqFields.MentorUsername, login_username, "Login username and mentor username do not match.")
if err != nil {
return
}
Expand Down
10 changes: 5 additions & 5 deletions controllers/student.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ func RegisterStudent(w http.ResponseWriter, r *http.Request) {
}

// Check if the JWT login username is the same as the student's given username
login_username := r.Context().Value(middleware.LOGIN_CTX_USERNAME_KEY).(string)
login_username := r.Context().Value(middleware.LOGIN_CTX_USERNAME_KEY).(utils.LoginJwtFields).Username

err = utils.DetectSessionHijackAndRespond(r, w, reqFields.Username, login_username, "Login username and given username do not match.")
if err != nil {
Expand Down Expand Up @@ -174,7 +174,7 @@ func StudentBlogLink(w http.ResponseWriter, r *http.Request) {
}

// Check if the JWT login username is the same as the student's given username
login_username := r.Context().Value(middleware.LOGIN_CTX_USERNAME_KEY).(string)
login_username := r.Context().Value(middleware.LOGIN_CTX_USERNAME_KEY).(utils.LoginJwtFields).Username

err = utils.DetectSessionHijackAndRespond(r, w, reqFields.Username, login_username, "Login username and given username do not match.")
if err != nil {
Expand Down Expand Up @@ -287,7 +287,7 @@ func FetchStudentDashboard(w http.ResponseWriter, r *http.Request) {

var modelStudent models.Student

login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY))
login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY)).(utils.LoginJwtFields).Username
tx := db.
Table("students").
Where("username = ?", login_username).
Expand Down Expand Up @@ -323,7 +323,7 @@ func UpdateStudentDetails(w http.ResponseWriter, r *http.Request) {

var modelStudent models.Student

login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY))
login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY)).(utils.LoginJwtFields).Username
tx := db.
Table("students").
Where("username = ?", login_username).
Expand Down Expand Up @@ -373,7 +373,7 @@ func GetStudentDetails(w http.ResponseWriter, r *http.Request) {
app := r.Context().Value(middleware.APP_CTX_KEY).(*middleware.App)
db := app.Db

login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY))
login_username := r.Context().Value(middleware.LoginCtxKey(middleware.LOGIN_CTX_USERNAME_KEY)).(utils.LoginJwtFields).Username

student := models.Student{}
tx := db.
Expand Down
2 changes: 1 addition & 1 deletion middleware/login.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func WithLogin(inner http.HandlerFunc) http.HandlerFunc {
}

reqContext := r.Context()
newContext := context.WithValue(reqContext, LoginCtxKey(LOGIN_CTX_USERNAME_KEY), claims.LoginJwtFields.Username)
newContext := context.WithValue(reqContext, LoginCtxKey(LOGIN_CTX_USERNAME_KEY), claims.LoginJwtFields)

inner.ServeHTTP(w, r.WithContext(newContext))
})
Expand Down
1 change: 1 addition & 0 deletions utils/jwt.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ func jwtKeyFunc(*jwt.Token) (interface{}, error) {

type LoginJwtFields struct {
Username string `json:"username"`
UserType string `json:"type"`
}

type LoginJwtClaims struct {
Expand Down

0 comments on commit 3afe040

Please sign in to comment.