Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Commit 9a5d9ff

Browse files
committed
webui: Refactor special case of getting owner & database in upload page
The upload page gets the database owner and name via GET parameters instead of extracting them from the actual URL. Also, unlike the other pages which extract them from the URL, not providing this information is permitted here. Because this is a unique case move the code to the uploadPage function instead of having it in the generic function.
1 parent cfbea2e commit 9a5d9ff

File tree

3 files changed

+49
-46
lines changed

3 files changed

+49
-46
lines changed

webui/main.go

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ func checkLogin(r *http.Request) (loggedInUser string, validSession bool, err er
379379
return
380380
}
381381

382-
func collectPageMetaInfo(r *http.Request, pageMeta *PageMetaInfo, meta *com.MetaInfo, getOwnerAndDatabaseFromUrl bool, getOwnerAndDatabaseFromData bool) (errCode int, err error) {
382+
func collectPageMetaInfo(r *http.Request, pageMeta *PageMetaInfo, meta *com.MetaInfo, getOwnerAndDatabaseFromUrl bool) (errCode int, err error) {
383383
// Auth0 info
384384
pageMeta.Auth0.CallbackURL = "https://" + com.Conf.Web.ServerName + "/x/callback"
385385
pageMeta.Auth0.ClientID = com.Conf.Auth0.ClientID
@@ -416,24 +416,11 @@ func collectPageMetaInfo(r *http.Request, pageMeta *PageMetaInfo, meta *com.Meta
416416
}
417417

418418
// Retrieve the database owner & name
419-
if getOwnerAndDatabaseFromUrl || getOwnerAndDatabaseFromData {
419+
if getOwnerAndDatabaseFromUrl {
420420
// TODO: Add folder and branch name support
421-
var dbOwner, dbName string
422-
if getOwnerAndDatabaseFromUrl {
423-
dbOwner, dbName, err = com.GetOD(1, r) // 1 = Ignore "/xxx/" at the start of the URL
424-
if err != nil {
425-
return http.StatusBadRequest, err
426-
}
427-
} else {
428-
// Get owner + dbname combination from post data
429-
dbOwner, _, dbName, err = com.GetUFD(r, true)
430-
if dbOwner == "" || dbName == "" {
431-
err = nil
432-
return
433-
}
434-
if err != nil {
435-
return http.StatusBadRequest, err
436-
}
421+
dbOwner, dbName, err := com.GetOD(1, r) // 1 = Ignore "/xxx/" at the start of the URL
422+
if err != nil {
423+
return http.StatusBadRequest, err
437424
}
438425

439426
// Validate the supplied information

webui/pages.go

Lines changed: 43 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func aboutPage(w http.ResponseWriter, r *http.Request) {
2323
}
2424

2525
// Get all meta information
26-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false)
26+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false)
2727
if err != nil {
2828
errorPage(w, r, errCode, err.Error())
2929
return
@@ -60,7 +60,7 @@ func branchesPage(w http.ResponseWriter, r *http.Request) {
6060
pageData.PageMeta.PageSection = "db_data"
6161

6262
// Get all meta information
63-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
63+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
6464
if err != nil {
6565
errorPage(w, r, errCode, err.Error())
6666
return
@@ -156,7 +156,7 @@ func commitsPage(w http.ResponseWriter, r *http.Request) {
156156
pageData.PageMeta.PageSection = "db_data"
157157

158158
// Get all meta information
159-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
159+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
160160
if err != nil {
161161
errorPage(w, r, errCode, err.Error())
162162
return
@@ -352,7 +352,7 @@ func comparePage(w http.ResponseWriter, r *http.Request) {
352352
pageData.PageMeta.Title = "Create a Merge Request"
353353

354354
// Get all meta information
355-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
355+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
356356
if err != nil {
357357
errorPage(w, r, errCode, err.Error())
358358
return
@@ -530,7 +530,7 @@ func confirmDeletePage(w http.ResponseWriter, r *http.Request) {
530530
pageData.PageMeta.Title = "Confirm database deletion"
531531

532532
// Get all meta information
533-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
533+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
534534
if err != nil {
535535
errorPage(w, r, errCode, err.Error())
536536
return
@@ -579,7 +579,7 @@ func contributorsPage(w http.ResponseWriter, r *http.Request) {
579579
pageData.PageMeta.PageSection = "db_data"
580580

581581
// Get all meta information
582-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
582+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
583583
if err != nil {
584584
errorPage(w, r, errCode, err.Error())
585585
return
@@ -670,7 +670,7 @@ func createBranchPage(w http.ResponseWriter, r *http.Request) {
670670
pageData.PageMeta.Title = "Create new branch"
671671

672672
// Get all meta information
673-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
673+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
674674
if err != nil {
675675
errorPage(w, r, errCode, err.Error())
676676
return
@@ -725,7 +725,7 @@ func createDiscussionPage(w http.ResponseWriter, r *http.Request) {
725725
pageData.PageMeta.PageSection = "db_disc"
726726

727727
// Get all meta information
728-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
728+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
729729
if err != nil {
730730
errorPage(w, r, errCode, err.Error())
731731
return
@@ -784,7 +784,7 @@ func createTagPage(w http.ResponseWriter, r *http.Request) {
784784
}
785785

786786
// Get all meta information
787-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
787+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
788788
if err != nil {
789789
errorPage(w, r, errCode, err.Error())
790790
return
@@ -835,7 +835,7 @@ func databasePage(w http.ResponseWriter, r *http.Request, dbOwner string, dbFold
835835
pageData.PageMeta.PageSection = "db_data"
836836

837837
// Get all meta information
838-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false)
838+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false)
839839
if err != nil {
840840
errorPage(w, r, errCode, err.Error())
841841
return
@@ -1233,7 +1233,7 @@ func diffPage(w http.ResponseWriter, r *http.Request) {
12331233
}
12341234

12351235
// Get all meta information
1236-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
1236+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
12371237
if err != nil {
12381238
errorPage(w, r, errCode, err.Error())
12391239
return
@@ -1341,7 +1341,7 @@ func discussPage(w http.ResponseWriter, r *http.Request) {
13411341
pageData.PageMeta.PageSection = "db_disc"
13421342

13431343
// Get all meta information
1344-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
1344+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
13451345
if err != nil {
13461346
errorPage(w, r, errCode, err.Error())
13471347
return
@@ -1449,7 +1449,7 @@ func errorPage(w http.ResponseWriter, r *http.Request, httpCode int, msg string)
14491449
pageData.PageMeta.Title = "Error"
14501450

14511451
// Get all meta information
1452-
_, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false)
1452+
_, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false)
14531453
if err != nil {
14541454
// We can't use errorPage() here, as it can lead to a recursive loop (which crashes)
14551455
w.WriteHeader(http.StatusInternalServerError)
@@ -1476,7 +1476,7 @@ func forksPage(w http.ResponseWriter, r *http.Request) {
14761476
pageData.PageMeta.Title = "Forks"
14771477

14781478
// Get all meta information
1479-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
1479+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
14801480
if err != nil {
14811481
errorPage(w, r, errCode, err.Error())
14821482
return
@@ -1520,7 +1520,7 @@ func frontPage(w http.ResponseWriter, r *http.Request) {
15201520
}
15211521

15221522
// Get all meta information
1523-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false)
1523+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false)
15241524
if err != nil {
15251525
errorPage(w, r, errCode, err.Error())
15261526
return
@@ -1582,7 +1582,7 @@ func mergePage(w http.ResponseWriter, r *http.Request) {
15821582
}
15831583

15841584
// Get all meta information
1585-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
1585+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
15861586
if err != nil {
15871587
errorPage(w, r, errCode, err.Error())
15881588
return
@@ -1825,7 +1825,7 @@ func prefPage(w http.ResponseWriter, r *http.Request, loggedInUser string) {
18251825
PageMeta PageMetaInfo
18261826
}
18271827
pageData.PageMeta.Title = "Settings"
1828-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false)
1828+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false)
18291829
if err != nil {
18301830
errorPage(w, r, errCode, err.Error())
18311831
return
@@ -1881,7 +1881,7 @@ func profilePage(w http.ResponseWriter, r *http.Request, userName string) {
18811881
Watching []com.DBEntry
18821882
}
18831883

1884-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false)
1884+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false)
18851885
if err != nil {
18861886
errorPage(w, r, errCode, err.Error())
18871887
return
@@ -2026,7 +2026,7 @@ func releasesPage(w http.ResponseWriter, r *http.Request) {
20262026
pageData.PageMeta.PageSection = "db_data"
20272027

20282028
// Get all meta information
2029-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
2029+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
20302030
if err != nil {
20312031
errorPage(w, r, errCode, err.Error())
20322032
return
@@ -2179,7 +2179,7 @@ func settingsPage(w http.ResponseWriter, r *http.Request) {
21792179
pageData.PageMeta.Title = "Database settings"
21802180

21812181
// Get all meta information
2182-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
2182+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
21832183
if err != nil {
21842184
errorPage(w, r, errCode, err.Error())
21852185
return
@@ -2360,7 +2360,7 @@ func starsPage(w http.ResponseWriter, r *http.Request) {
23602360
pageData.PageMeta.Title = "Stars"
23612361

23622362
// Get all meta information
2363-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
2363+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
23642364
if err != nil {
23652365
errorPage(w, r, errCode, err.Error())
23662366
return
@@ -2416,7 +2416,7 @@ func tagsPage(w http.ResponseWriter, r *http.Request) {
24162416
pageData.PageMeta.PageSection = "db_data"
24172417

24182418
// Get all meta information
2419-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
2419+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
24202420
if err != nil {
24212421
errorPage(w, r, errCode, err.Error())
24222422
return
@@ -2512,7 +2512,7 @@ func updatesPage(w http.ResponseWriter, r *http.Request) {
25122512
}
25132513

25142514
// Get all meta information
2515-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false)
2515+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false)
25162516
if err != nil {
25172517
errorPage(w, r, errCode, err.Error())
25182518
return
@@ -2558,7 +2558,7 @@ func uploadPage(w http.ResponseWriter, r *http.Request) {
25582558
}
25592559

25602560
// Get meta information
2561-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, true)
2561+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false)
25622562
if err != nil {
25632563
errorPage(w, r, errCode, err.Error())
25642564
return
@@ -2571,6 +2571,22 @@ func uploadPage(w http.ResponseWriter, r *http.Request) {
25712571
return
25722572
}
25732573

2574+
// Retrieve the database owner & name from GET parameters.
2575+
// Purposefully not checking for errors here because not providing this information is permitted.
2576+
dbOwner, _, dbName, _ := com.GetUFD(r, true)
2577+
2578+
// Retrieve correctly capitalised username for the database owner
2579+
usr, err := com.User(dbOwner)
2580+
if err != nil {
2581+
errorPage(w, r, http.StatusBadRequest, err.Error())
2582+
return
2583+
}
2584+
2585+
// Store information
2586+
pageData.Meta.Database = dbName
2587+
pageData.Meta.Owner = usr.Username
2588+
pageData.Meta.Folder = "/"
2589+
25742590
// Check if the user has write access to this database, also set the public/private button to the existing value
25752591
if pageData.Meta.Owner != "" && pageData.Meta.Database != "" {
25762592
writeAccess, err := com.CheckDBPermissions(pageData.PageMeta.LoggedInUser, pageData.Meta.Owner, "/", pageData.Meta.Database, true)
@@ -2604,7 +2620,7 @@ func uploadPage(w http.ResponseWriter, r *http.Request) {
26042620
}
26052621

26062622
// Ensure the user has set their display name and email address
2607-
usr, err := com.User(pageData.PageMeta.LoggedInUser)
2623+
usr, err = com.User(pageData.PageMeta.LoggedInUser)
26082624
if err != nil {
26092625
errorPage(w, r, http.StatusInternalServerError, "Error when retrieving user details")
26102626
return
@@ -2645,7 +2661,7 @@ func userPage(w http.ResponseWriter, r *http.Request, userName string) {
26452661
}
26462662

26472663
// Get all meta information
2648-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false)
2664+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false)
26492665
if err != nil {
26502666
errorPage(w, r, errCode, err.Error())
26512667
return
@@ -2708,7 +2724,7 @@ func watchersPage(w http.ResponseWriter, r *http.Request) {
27082724
pageData.PageMeta.Title = "Watchers"
27092725

27102726
// Get all meta information
2711-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
2727+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
27122728
if err != nil {
27132729
errorPage(w, r, errCode, err.Error())
27142730
return

webui/vis.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func visualisePage(w http.ResponseWriter, r *http.Request) {
3333
}
3434

3535
// Get all meta information
36-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
36+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true)
3737
if err != nil {
3838
errorPage(w, r, errCode, err.Error())
3939
return

0 commit comments

Comments
 (0)