-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathmain.go
More file actions
82 lines (75 loc) · 2.72 KB
/
main.go
File metadata and controls
82 lines (75 loc) · 2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package main
import (
"html/template"
"net/http"
"strings"
loadenv "github.com/caarlos0/env/v11"
cshAuth "github.com/computersciencehouse/csh-auth"
. "github.com/computersciencehouse/selections/internal"
"github.com/gin-gonic/gin"
)
func main() {
//Get environment variables into struct
env := GetEnv()
loadenv.Parse(env)
auth := cshAuth.CSHAuth{}
auth.Init(env.OIDCClientID,
env.OIDCClientSecret,
env.SessionSecret,
env.SessionState,
env.BaseUri,
env.BaseUri+"/auth/callback",
env.BaseUri+"/auth/login",
[]string{"profile", "email", "groups"},
)
//DB Initialization
InitData()
router := gin.Default()
router.FuncMap = template.FuncMap{
"len": Length,
"loop": Loop,
"add": func(a int, b ...int) int {
for _, i := range b {
a += i
}
return a
},
"safeIndex": func(s []int, i int) int {
if i < len(s) {
return s[i]
}
return -1
}}
router.LoadHTMLGlob("templates/*")
router.StaticFS("/static", http.Dir("static"))
//Define routes here
router.GET("/auth/login", auth.AuthRequest)
router.GET("/auth/callback", auth.AuthCallback)
router.GET("/auth/logout", auth.AuthLogout)
router.GET("/rl/login", HandleGetRlLogin)
router.POST("/rl/login", HandlePostRlLogin)
router.GET("/", auth.AuthWrapper(HandleSessionHomePage))
router.GET("/admin", auth.AuthWrapper(HandleAdminPage))
router.GET("/admin/debug", auth.AuthWrapper(HandleDebugPage))
router.POST("/admin/debug", auth.AuthWrapper(HandleDebugPost))
router.POST("/admin/newCode", auth.AuthWrapper(HandleAdminNewRLCode))
router.POST("/application/upload", PaulthWrapper(auth, HandleApplicationFileUpload))
router.GET("/application/manage", PaulthWrapper(auth, HandleApplicationManagementPage))
router.GET("/application/export", PaulthWrapper(auth, HandleApplicationExport))
router.GET("/application/:id", PaulthWrapper(auth, HandleApplicationGet))
router.DELETE("/application/:id", PaulthWrapper(auth, HandleApplicationDelete))
router.POST("/application/:id/rate", auth.AuthWrapper(HandleApplicationRating))
router.POST("/team/:id/assign", auth.AuthWrapper(HandleTeamApplicationAssignment))
router.GET("/session/manage", auth.AuthWrapper(HandleSessionManagementPage))
router.POST("/session/manage", auth.AuthWrapper(HandleSessionChanging))
router.GET("/session/allMembers", auth.AuthWrapper(HandleSessionEligibleMemberList))
router.POST("/session/addMembers", auth.AuthWrapper(HandleSessionAddMembers))
router.POST("/session/removeMember", auth.AuthWrapper(HandleSessionRemoveMember))
router.POST("/session/createTeams", auth.AuthWrapper(HandleTeamCreation))
router.GET("/admin/debug/error", HandleDebugError)
address := ":8080"
if strings.Contains(env.BaseUri, "localhost") {
address = "localhost" + address
}
router.Run(address)
}