From 5f972c4c9f9d4a4227c4a44d0ca9ae32a097518e Mon Sep 17 00:00:00 2001 From: yuli Date: Wed, 14 Aug 2024 00:34:33 +0300 Subject: [PATCH] code optimization --- src/expiration_api.go | 32 ++++++---------------------- src/requests_api.go | 27 ++++-------------------- src/sessions_api.go | 45 ++++------------------------------------ src/sharedrecords_api.go | 4 ++-- src/sharedrecords_db.go | 6 +++--- 5 files changed, 19 insertions(+), 95 deletions(-) diff --git a/src/expiration_api.go b/src/expiration_api.go index ffa4e4c..c8e1cfc 100644 --- a/src/expiration_api.go +++ b/src/expiration_api.go @@ -28,16 +28,15 @@ func (e mainEnv) expUsers() error { } func (e mainEnv) expGetStatus(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { - var err error identity := ps.ByName("identity") mode := ps.ByName("mode") event := audit("get expiration status by "+mode, identity, mode, identity) defer func() { event.submit(e.db, e.conf) }() + var err error if validateMode(mode) == false { returnError(w, r, "bad mode", 405, nil, event) return } - userTOKEN := identity var userBson bson.M if mode == "token" { if enforceUUID(w, identity, event) == false { @@ -46,15 +45,13 @@ func (e mainEnv) expGetStatus(w http.ResponseWriter, r *http.Request, ps httprou userBson, err = e.db.lookupUserRecord(identity) } else { userBson, err = e.db.lookupUserRecordByIndex(mode, identity, e.conf) - if userBson != nil { - userTOKEN = userBson["token"].(string) - event.Record = userTOKEN - } } if userBson == nil || err != nil { returnError(w, r, "internal error", 405, nil, event) return } + userTOKEN := userBson["token"].(string) + event.Record = userTOKEN expirationDate := getIntValue(userBson["endtime"]) expirationStatus := getStringValue(userBson["expstatus"]) expirationToken := getStringValue(userBson["exptoken"]) @@ -164,29 +161,12 @@ func (e mainEnv) expStart(w http.ResponseWriter, r *http.Request, ps httprouter. mode := ps.ByName("mode") event := audit("initiate user record expiration by "+mode, identity, mode, identity) defer func() { event.submit(e.db, e.conf) }() - if validateMode(mode) == false { - returnError(w, r, "bad mode", 405, nil, event) - return - } + if e.enforceAdmin(w, r) == "" { return } - userTOKEN := identity - var userBson bson.M - if mode == "token" { - if enforceUUID(w, identity, event) == false { - return - } - userBson, err = e.db.lookupUserRecord(identity) - } else { - userBson, err = e.db.lookupUserRecordByIndex(mode, identity, e.conf) - if userBson != nil { - userTOKEN = userBson["token"].(string) - event.Record = userTOKEN - } - } - if userBson == nil || err != nil { - returnError(w, r, "internal error", 405, nil, event) + userTOKEN := e.loadUserToken(w, r, mode, identity, event) + if userTOKEN == "" { return } records, err := getJSONPostMap(r) diff --git a/src/requests_api.go b/src/requests_api.go index 114054a..db9a8de 100644 --- a/src/requests_api.go +++ b/src/requests_api.go @@ -7,7 +7,6 @@ import ( "strings" "github.com/julienschmidt/httprouter" - "go.mongodb.org/mongo-driver/bson" ) // This function retrieves all requests that require admin approval. This function supports result pager. @@ -46,31 +45,13 @@ func (e mainEnv) getCustomUserRequests(w http.ResponseWriter, r *http.Request, p event := audit("get user privacy requests", identity, mode, identity) defer func() { event.submit(e.db, e.conf) }() - if validateMode(mode) == false { - returnError(w, r, "bad mode", 405, nil, event) - return - } - userTOKEN := identity - var userBson bson.M - if mode == "token" { - if enforceUUID(w, identity, event) == false { - return - } - userBson, _ = e.db.lookupUserRecord(identity) - } else { - userBson, _ = e.db.lookupUserRecordByIndex(mode, identity, e.conf) - if userBson != nil { - userTOKEN = userBson["token"].(string) - event.Record = userTOKEN - } - } - if userBson == nil { - returnError(w, r, "internal error", 405, nil, event) - return - } if e.enforceAuth(w, r, event) == "" { return } + userTOKEN := e.loadUserToken(w, r, mode, identity, event) + if userTOKEN == "" { + return + } var offset int32 var limit int32 = 10 args := r.URL.Query() diff --git a/src/sessions_api.go b/src/sessions_api.go index a386b51..9e6e313 100644 --- a/src/sessions_api.go +++ b/src/sessions_api.go @@ -92,26 +92,8 @@ func (e mainEnv) newUserSession(w http.ResponseWriter, r *http.Request, ps httpr event := audit("create user session", identity, mode, identity) defer func() { event.submit(e.db, e.conf) }() - if validateMode(mode) == false { - returnError(w, r, "bad mode", 405, nil, event) - return - } - userTOKEN := identity - var userBson bson.M - if mode == "token" { - if enforceUUID(w, identity, event) == false { - return - } - userBson, _ = e.db.lookupUserRecord(identity) - } else { - userBson, _ = e.db.lookupUserRecordByIndex(mode, identity, e.conf) - if userBson != nil { - userTOKEN = userBson["token"].(string) - event.Record = userTOKEN - } - } - if userBson == nil { - returnError(w, r, "internal error", 405, nil, event) + userTOKEN := e.loadUserToken(w, r, mode, identity, event) + if userTOKEN == "" { return } if e.enforceAuth(w, r, event) == "" { @@ -154,27 +136,8 @@ func (e mainEnv) getUserSessions(w http.ResponseWriter, r *http.Request, ps http event := audit("get all user sessions", identity, mode, identity) defer func() { event.submit(e.db, e.conf) }() - if validateMode(mode) == false { - returnError(w, r, "bad mode", 405, nil, event) - return - } - userTOKEN := identity - var userBson bson.M - if mode == "token" { - if enforceUUID(w, identity, event) == false { - return - } - userBson, _ = e.db.lookupUserRecord(identity) - } else { - // TODO: decode url in code! - userBson, _ = e.db.lookupUserRecordByIndex(mode, identity, e.conf) - if userBson != nil { - userTOKEN = userBson["token"].(string) - event.Record = userTOKEN - } - } - if userBson == nil { - returnError(w, r, "internal error", 405, nil, event) + userTOKEN := e.loadUserToken(w, r, mode, identity, event) + if userTOKEN == "" { return } if e.enforceAuth(w, r, event) == "" { diff --git a/src/sharedrecords_api.go b/src/sharedrecords_api.go index 07e3136..3e83bee 100644 --- a/src/sharedrecords_api.go +++ b/src/sharedrecords_api.go @@ -14,7 +14,7 @@ import ( func (e mainEnv) newSharedRecord(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { userTOKEN := ps.ByName("token") - event := audit("create shared record by user token", userTOKEN, "token", userTOKEN) + event := audit("create shareable record by user token", userTOKEN, "token", userTOKEN) defer func() { event.submit(e.db, e.conf) }() if enforceUUID(w, userTOKEN, event) == false { @@ -85,7 +85,7 @@ func (e mainEnv) newSharedRecord(w http.ResponseWriter, r *http.Request, ps http func (e mainEnv) getRecord(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { record := ps.ByName("record") - event := audit("get record data by record token", record, "record", record) + event := audit("get shareable record by token", record, "record", record) defer func() { event.submit(e.db, e.conf) }() if enforceUUID(w, record, event) == false { diff --git a/src/sharedrecords_db.go b/src/sharedrecords_db.go index dff834d..02403be 100644 --- a/src/sharedrecords_db.go +++ b/src/sharedrecords_db.go @@ -67,9 +67,9 @@ func (dbobj dbcon) saveSharedRecord(userTOKEN string, fields string, expiration func (dbobj dbcon) getSharedRecord(recordUUID string) (checkRecordResult, error) { var result checkRecordResult - if isValidUUID(recordUUID) == false { - return result, errors.New("failed to authenticate") - } + //if isValidUUID(recordUUID) == false { + // return result, errors.New("failed to authenticate") + //} record, err := dbobj.store.GetRecord(storage.TblName.Sharedrecords, "record", recordUUID) if record == nil || err != nil { return result, errors.New("failed to authenticate")