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

Commit cfbea2e

Browse files
committed
webui: Move login check into a separate function
Instead of checking the login while collecting meta information check it in a separate, explicit function. This makes it more obvious what is happening.
1 parent 2fc5034 commit cfbea2e

File tree

3 files changed

+95
-33
lines changed

3 files changed

+95
-33
lines changed

webui/main.go

Lines changed: 12 additions & 6 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, requireLogin bool, getOwnerAndDatabaseFromUrl bool, getOwnerAndDatabaseFromData bool) (errCode int, err error) {
382+
func collectPageMetaInfo(r *http.Request, pageMeta *PageMetaInfo, meta *com.MetaInfo, getOwnerAndDatabaseFromUrl bool, getOwnerAndDatabaseFromData 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
@@ -400,11 +400,6 @@ func collectPageMetaInfo(r *http.Request, pageMeta *PageMetaInfo, meta *com.Meta
400400
pageMeta.LoggedInUser = loggedInUser
401401
}
402402

403-
// Ensure we have a valid logged in user
404-
if requireLogin && !validSession {
405-
return http.StatusUnauthorized, fmt.Errorf("You need to be logged in")
406-
}
407-
408403
// Retrieve the details and status updates count for the logged in user
409404
if validSession {
410405
ur, err := com.User(loggedInUser)
@@ -3759,6 +3754,17 @@ func prefHandler(w http.ResponseWriter, r *http.Request) {
37593754
http.Redirect(w, r, "/"+loggedInUser, http.StatusSeeOther)
37603755
}
37613756

3757+
// Returns an error if the user is not logged in according to the page meta data.
3758+
// This requires the meta data structure to be filled in before
3759+
func requireLogin(pageMeta PageMetaInfo) (errCode int, err error) {
3760+
// Ensure we have a valid logged in user
3761+
if pageMeta.LoggedInUser == "" {
3762+
return http.StatusUnauthorized, fmt.Errorf("You need to be logged in")
3763+
}
3764+
3765+
return
3766+
}
3767+
37623768
// Handler for the Database Settings page
37633769
func saveSettingsHandler(w http.ResponseWriter, r *http.Request) {
37643770
// Retrieve session data (if any)

webui/pages.go

Lines changed: 82 additions & 26 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, false)
26+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, 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, false, true, false)
63+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
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, false, true, false)
159+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
160160
if err != nil {
161161
errorPage(w, r, errCode, err.Error())
162162
return
@@ -352,7 +352,14 @@ 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, true, false)
355+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
356+
if err != nil {
357+
errorPage(w, r, errCode, err.Error())
358+
return
359+
}
360+
361+
// Require login
362+
errCode, err = requireLogin(pageData.PageMeta)
356363
if err != nil {
357364
errorPage(w, r, errCode, err.Error())
358365
return
@@ -523,7 +530,14 @@ func confirmDeletePage(w http.ResponseWriter, r *http.Request) {
523530
pageData.PageMeta.Title = "Confirm database deletion"
524531

525532
// Get all meta information
526-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, true, false)
533+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
534+
if err != nil {
535+
errorPage(w, r, errCode, err.Error())
536+
return
537+
}
538+
539+
// Require login
540+
errCode, err = requireLogin(pageData.PageMeta)
527541
if err != nil {
528542
errorPage(w, r, errCode, err.Error())
529543
return
@@ -565,7 +579,7 @@ func contributorsPage(w http.ResponseWriter, r *http.Request) {
565579
pageData.PageMeta.PageSection = "db_data"
566580

567581
// Get all meta information
568-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, true, false)
582+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
569583
if err != nil {
570584
errorPage(w, r, errCode, err.Error())
571585
return
@@ -656,7 +670,14 @@ func createBranchPage(w http.ResponseWriter, r *http.Request) {
656670
pageData.PageMeta.Title = "Create new branch"
657671

658672
// Get all meta information
659-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, true, false)
673+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
674+
if err != nil {
675+
errorPage(w, r, errCode, err.Error())
676+
return
677+
}
678+
679+
// Require login
680+
errCode, err = requireLogin(pageData.PageMeta)
660681
if err != nil {
661682
errorPage(w, r, errCode, err.Error())
662683
return
@@ -704,7 +725,14 @@ func createDiscussionPage(w http.ResponseWriter, r *http.Request) {
704725
pageData.PageMeta.PageSection = "db_disc"
705726

706727
// Get all meta information
707-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, true, false)
728+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
729+
if err != nil {
730+
errorPage(w, r, errCode, err.Error())
731+
return
732+
}
733+
734+
// Require login
735+
errCode, err = requireLogin(pageData.PageMeta)
708736
if err != nil {
709737
errorPage(w, r, errCode, err.Error())
710738
return
@@ -756,7 +784,14 @@ func createTagPage(w http.ResponseWriter, r *http.Request) {
756784
}
757785

758786
// Get all meta information
759-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, true, false)
787+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
788+
if err != nil {
789+
errorPage(w, r, errCode, err.Error())
790+
return
791+
}
792+
793+
// Require login
794+
errCode, err = requireLogin(pageData.PageMeta)
760795
if err != nil {
761796
errorPage(w, r, errCode, err.Error())
762797
return
@@ -800,7 +835,7 @@ func databasePage(w http.ResponseWriter, r *http.Request, dbOwner string, dbFold
800835
pageData.PageMeta.PageSection = "db_data"
801836

802837
// Get all meta information
803-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false, false)
838+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false)
804839
if err != nil {
805840
errorPage(w, r, errCode, err.Error())
806841
return
@@ -1198,7 +1233,7 @@ func diffPage(w http.ResponseWriter, r *http.Request) {
11981233
}
11991234

12001235
// Get all meta information
1201-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, true, false)
1236+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
12021237
if err != nil {
12031238
errorPage(w, r, errCode, err.Error())
12041239
return
@@ -1306,7 +1341,7 @@ func discussPage(w http.ResponseWriter, r *http.Request) {
13061341
pageData.PageMeta.PageSection = "db_disc"
13071342

13081343
// Get all meta information
1309-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, true, false)
1344+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
13101345
if err != nil {
13111346
errorPage(w, r, errCode, err.Error())
13121347
return
@@ -1414,7 +1449,7 @@ func errorPage(w http.ResponseWriter, r *http.Request, httpCode int, msg string)
14141449
pageData.PageMeta.Title = "Error"
14151450

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

14431478
// Get all meta information
1444-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, true, false)
1479+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
14451480
if err != nil {
14461481
errorPage(w, r, errCode, err.Error())
14471482
return
@@ -1485,7 +1520,7 @@ func frontPage(w http.ResponseWriter, r *http.Request) {
14851520
}
14861521

14871522
// Get all meta information
1488-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false, false)
1523+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false)
14891524
if err != nil {
14901525
errorPage(w, r, errCode, err.Error())
14911526
return
@@ -1547,7 +1582,7 @@ func mergePage(w http.ResponseWriter, r *http.Request) {
15471582
}
15481583

15491584
// Get all meta information
1550-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, true, false)
1585+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
15511586
if err != nil {
15521587
errorPage(w, r, errCode, err.Error())
15531588
return
@@ -1790,7 +1825,7 @@ func prefPage(w http.ResponseWriter, r *http.Request, loggedInUser string) {
17901825
PageMeta PageMetaInfo
17911826
}
17921827
pageData.PageMeta.Title = "Settings"
1793-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false, false)
1828+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false)
17941829
if err != nil {
17951830
errorPage(w, r, errCode, err.Error())
17961831
return
@@ -1846,7 +1881,7 @@ func profilePage(w http.ResponseWriter, r *http.Request, userName string) {
18461881
Watching []com.DBEntry
18471882
}
18481883

1849-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false, false)
1884+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false)
18501885
if err != nil {
18511886
errorPage(w, r, errCode, err.Error())
18521887
return
@@ -1991,7 +2026,7 @@ func releasesPage(w http.ResponseWriter, r *http.Request) {
19912026
pageData.PageMeta.PageSection = "db_data"
19922027

19932028
// Get all meta information
1994-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, true, false)
2029+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
19952030
if err != nil {
19962031
errorPage(w, r, errCode, err.Error())
19972032
return
@@ -2144,7 +2179,14 @@ func settingsPage(w http.ResponseWriter, r *http.Request) {
21442179
pageData.PageMeta.Title = "Database settings"
21452180

21462181
// Get all meta information
2147-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, true, false)
2182+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
2183+
if err != nil {
2184+
errorPage(w, r, errCode, err.Error())
2185+
return
2186+
}
2187+
2188+
// Require login
2189+
errCode, err = requireLogin(pageData.PageMeta)
21482190
if err != nil {
21492191
errorPage(w, r, errCode, err.Error())
21502192
return
@@ -2318,7 +2360,7 @@ func starsPage(w http.ResponseWriter, r *http.Request) {
23182360
pageData.PageMeta.Title = "Stars"
23192361

23202362
// Get all meta information
2321-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, true, false)
2363+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
23222364
if err != nil {
23232365
errorPage(w, r, errCode, err.Error())
23242366
return
@@ -2374,7 +2416,7 @@ func tagsPage(w http.ResponseWriter, r *http.Request) {
23742416
pageData.PageMeta.PageSection = "db_data"
23752417

23762418
// Get all meta information
2377-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, true, false)
2419+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
23782420
if err != nil {
23792421
errorPage(w, r, errCode, err.Error())
23802422
return
@@ -2470,7 +2512,14 @@ func updatesPage(w http.ResponseWriter, r *http.Request) {
24702512
}
24712513

24722514
// Get all meta information
2473-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false, false)
2515+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false)
2516+
if err != nil {
2517+
errorPage(w, r, errCode, err.Error())
2518+
return
2519+
}
2520+
2521+
// Require login
2522+
errCode, err = requireLogin(pageData.PageMeta)
24742523
if err != nil {
24752524
errorPage(w, r, errCode, err.Error())
24762525
return
@@ -2509,7 +2558,14 @@ func uploadPage(w http.ResponseWriter, r *http.Request) {
25092558
}
25102559

25112560
// Get meta information
2512-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false, true)
2561+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, true)
2562+
if err != nil {
2563+
errorPage(w, r, errCode, err.Error())
2564+
return
2565+
}
2566+
2567+
// Require login
2568+
errCode, err = requireLogin(pageData.PageMeta)
25132569
if err != nil {
25142570
errorPage(w, r, errCode, err.Error())
25152571
return
@@ -2589,7 +2645,7 @@ func userPage(w http.ResponseWriter, r *http.Request, userName string) {
25892645
}
25902646

25912647
// Get all meta information
2592-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false, false)
2648+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, false)
25932649
if err != nil {
25942650
errorPage(w, r, errCode, err.Error())
25952651
return
@@ -2652,7 +2708,7 @@ func watchersPage(w http.ResponseWriter, r *http.Request) {
26522708
pageData.PageMeta.Title = "Watchers"
26532709

26542710
// Get all meta information
2655-
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, false, true, false)
2711+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
26562712
if err != nil {
26572713
errorPage(w, r, errCode, err.Error())
26582714
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, false, true, false)
36+
errCode, err := collectPageMetaInfo(r, &pageData.PageMeta, &pageData.Meta, true, false)
3737
if err != nil {
3838
errorPage(w, r, errCode, err.Error())
3939
return

0 commit comments

Comments
 (0)