GRA-414: added additional logs for user controllers

This commit is contained in:
Abhishek Kondur 2022-07-12 14:49:49 +04:00 committed by Matthew R. Kasun
parent b331d9019f
commit c715f81582

View file

@ -44,23 +44,27 @@ func authenticateUser(response http.ResponseWriter, request *http.Request) {
decoderErr := decoder.Decode(&authRequest) decoderErr := decoder.Decode(&authRequest)
defer request.Body.Close() defer request.Body.Close()
if decoderErr != nil { if decoderErr != nil {
logger.Log(0, "error decoding request body: ",
decoderErr.Error())
returnErrorResponse(response, request, errorResponse) returnErrorResponse(response, request, errorResponse)
return return
} }
username := authRequest.UserName
jwt, err := logic.VerifyAuthRequest(authRequest) jwt, err := logic.VerifyAuthRequest(authRequest)
if err != nil { if err != nil {
logger.Log(0, username, "user validation failed: ",
err.Error())
returnErrorResponse(response, request, formatError(err, "badrequest")) returnErrorResponse(response, request, formatError(err, "badrequest"))
return return
} }
if jwt == "" { if jwt == "" {
// very unlikely that err is !nil and no jwt returned, but handle it anyways. // very unlikely that err is !nil and no jwt returned, but handle it anyways.
logger.Log(0, username, "jwt token is empty")
returnErrorResponse(response, request, formatError(errors.New("no token returned"), "internal")) returnErrorResponse(response, request, formatError(errors.New("no token returned"), "internal"))
return return
} }
username := authRequest.UserName
var successResponse = models.SuccessResponse{ var successResponse = models.SuccessResponse{
Code: http.StatusOK, Code: http.StatusOK,
Message: "W1R3: Device " + username + " Authorized", Message: "W1R3: Device " + username + " Authorized",
@ -73,6 +77,8 @@ func authenticateUser(response http.ResponseWriter, request *http.Request) {
successJSONResponse, jsonError := json.Marshal(successResponse) successJSONResponse, jsonError := json.Marshal(successResponse)
if jsonError != nil { if jsonError != nil {
logger.Log(0, username,
"error marshalling resp: ", err.Error())
returnErrorResponse(response, request, errorResponse) returnErrorResponse(response, request, errorResponse)
return return
} }
@ -87,6 +93,7 @@ func hasAdmin(w http.ResponseWriter, r *http.Request) {
hasadmin, err := logic.HasAdmin() hasadmin, err := logic.HasAdmin()
if err != nil { if err != nil {
logger.Log(0, "failed to check for admin: ", err.Error())
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
return return
} }
@ -109,7 +116,7 @@ func GetUserInternal(username string) (models.User, error) {
return user, err return user, err
} }
// Get an individual node. Nothin fancy here folks. // Get an individual user. Nothin fancy here folks.
func getUser(w http.ResponseWriter, r *http.Request) { func getUser(w http.ResponseWriter, r *http.Request) {
// set header. // set header.
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")
@ -119,6 +126,7 @@ func getUser(w http.ResponseWriter, r *http.Request) {
user, err := logic.GetUser(usernameFetched) user, err := logic.GetUser(usernameFetched)
if err != nil { if err != nil {
logger.Log(0, usernameFetched, "failed to fetch user: ", err.Error())
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
return return
} }
@ -126,7 +134,7 @@ func getUser(w http.ResponseWriter, r *http.Request) {
json.NewEncoder(w).Encode(user) json.NewEncoder(w).Encode(user)
} }
// Get an individual node. Nothin fancy here folks. // Get all users. Nothin fancy here folks.
func getUsers(w http.ResponseWriter, r *http.Request) { func getUsers(w http.ResponseWriter, r *http.Request) {
// set header. // set header.
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")
@ -134,6 +142,7 @@ func getUsers(w http.ResponseWriter, r *http.Request) {
users, err := logic.GetUsers() users, err := logic.GetUsers()
if err != nil { if err != nil {
logger.Log(0, "failed to fetch users: ", err.Error())
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
return return
} }
@ -146,12 +155,20 @@ func createAdmin(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")
var admin models.User var admin models.User
// get node from body of request
_ = json.NewDecoder(r.Body).Decode(&admin)
admin, err := logic.CreateAdmin(admin) err := json.NewDecoder(r.Body).Decode(&admin)
if err != nil {
logger.Log(0, admin.UserName, "error decoding request body: ",
err.Error())
returnErrorResponse(w, r, formatError(err, "badrequest"))
return
}
admin, err = logic.CreateAdmin(admin)
if err != nil { if err != nil {
logger.Log(0, admin.UserName, "failed to create admin: ",
err.Error())
returnErrorResponse(w, r, formatError(err, "badrequest")) returnErrorResponse(w, r, formatError(err, "badrequest"))
return return
} }
@ -163,12 +180,17 @@ func createUser(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")
var user models.User var user models.User
// get node from body of request err := json.NewDecoder(r.Body).Decode(&user)
_ = json.NewDecoder(r.Body).Decode(&user)
user, err := logic.CreateUser(user)
if err != nil { if err != nil {
logger.Log(0, "error decoding request body: ",
err.Error())
returnErrorResponse(w, r, formatError(err, "badrequest"))
return
}
user, err = logic.CreateUser(user)
if err != nil {
logger.Log(0, user.UserName, "error creating new user: ",
err.Error())
returnErrorResponse(w, r, formatError(err, "badrequest")) returnErrorResponse(w, r, formatError(err, "badrequest"))
return return
} }
@ -184,6 +206,8 @@ func updateUserNetworks(w http.ResponseWriter, r *http.Request) {
username := params["username"] username := params["username"]
user, err := GetUserInternal(username) user, err := GetUserInternal(username)
if err != nil { if err != nil {
logger.Log(0, username,
"failed to update user networks: ", err.Error())
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
return return
} }
@ -191,11 +215,15 @@ func updateUserNetworks(w http.ResponseWriter, r *http.Request) {
// we decode our body request params // we decode our body request params
err = json.NewDecoder(r.Body).Decode(&userchange) err = json.NewDecoder(r.Body).Decode(&userchange)
if err != nil { if err != nil {
returnErrorResponse(w, r, formatError(err, "internal")) logger.Log(0, "error decoding request body: ",
err.Error())
returnErrorResponse(w, r, formatError(err, "badrequest"))
return return
} }
err = logic.UpdateUserNetworks(userchange.Networks, userchange.IsAdmin, &user) err = logic.UpdateUserNetworks(userchange.Networks, userchange.IsAdmin, &user)
if err != nil { if err != nil {
logger.Log(0, username,
"failed to update user networks: ", err.Error())
returnErrorResponse(w, r, formatError(err, "badrequest")) returnErrorResponse(w, r, formatError(err, "badrequest"))
return return
} }
@ -211,23 +239,31 @@ func updateUser(w http.ResponseWriter, r *http.Request) {
username := params["username"] username := params["username"]
user, err := GetUserInternal(username) user, err := GetUserInternal(username)
if err != nil { if err != nil {
logger.Log(0, username,
"failed to update user info: ", err.Error())
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
return return
} }
if auth.IsOauthUser(&user) == nil { if auth.IsOauthUser(&user) == nil {
returnErrorResponse(w, r, formatError(fmt.Errorf("can not update user info for oauth user %s", username), "forbidden")) err := fmt.Errorf("cannot update user info for oauth user %s", username)
logger.Log(0, err.Error())
returnErrorResponse(w, r, formatError(err, "forbidden"))
return return
} }
var userchange models.User var userchange models.User
// we decode our body request params // we decode our body request params
err = json.NewDecoder(r.Body).Decode(&userchange) err = json.NewDecoder(r.Body).Decode(&userchange)
if err != nil { if err != nil {
returnErrorResponse(w, r, formatError(err, "internal")) logger.Log(0, "error decoding request body: ",
err.Error())
returnErrorResponse(w, r, formatError(err, "badrequest"))
return return
} }
userchange.Networks = nil userchange.Networks = nil
user, err = logic.UpdateUser(userchange, user) user, err = logic.UpdateUser(userchange, user)
if err != nil { if err != nil {
logger.Log(0, username,
"failed to update user info: ", err.Error())
returnErrorResponse(w, r, formatError(err, "badrequest")) returnErrorResponse(w, r, formatError(err, "badrequest"))
return return
} }
@ -247,18 +283,28 @@ func updateUserAdm(w http.ResponseWriter, r *http.Request) {
return return
} }
if auth.IsOauthUser(&user) != nil { if auth.IsOauthUser(&user) != nil {
returnErrorResponse(w, r, formatError(fmt.Errorf("can not update user info for oauth user"), "forbidden")) err := fmt.Errorf("cannot update user info for oauth user %s", username)
logger.Log(0, err.Error())
returnErrorResponse(w, r, formatError(err, "forbidden"))
return return
} }
var userchange models.User var userchange models.User
// we decode our body request params // we decode our body request params
err = json.NewDecoder(r.Body).Decode(&userchange) err = json.NewDecoder(r.Body).Decode(&userchange)
if err != nil { if err != nil {
logger.Log(0, "error decoding request body: ",
err.Error())
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
return return
} }
if !user.IsAdmin {
logger.Log(0, username, "not a admin user")
returnErrorResponse(w, r, formatError(errors.New("not a admin user"), "badrequest"))
}
user, err = logic.UpdateUser(userchange, user) user, err = logic.UpdateUser(userchange, user)
if err != nil { if err != nil {
logger.Log(0, username,
"failed to update user (admin) info: ", err.Error())
returnErrorResponse(w, r, formatError(err, "badrequest")) returnErrorResponse(w, r, formatError(err, "badrequest"))
return return
} }
@ -274,13 +320,17 @@ func deleteUser(w http.ResponseWriter, r *http.Request) {
var params = mux.Vars(r) var params = mux.Vars(r)
username := params["username"] username := params["username"]
success, err := logic.DeleteUser(username)
success, err := logic.DeleteUser(username)
if err != nil { if err != nil {
logger.Log(0, username,
"failed to delete user: ", err.Error())
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
return return
} else if !success { } else if !success {
returnErrorResponse(w, r, formatError(errors.New("delete unsuccessful"), "badrequest")) err := errors.New("delete unsuccessful")
logger.Log(0, username, err.Error())
returnErrorResponse(w, r, formatError(err, "badrequest"))
return return
} }