@@ -95,12 +95,15 @@ func main() {
9595 r .GET ("/auth/callback" , csh .AuthCallback )
9696 r .GET ("/auth/logout" , csh .AuthLogout )
9797
98+ r .GET ("/eboard" , csh .AuthWrapper (HandleGetEboardVote ))
99+ r .POST ("/eboard" , csh .AuthWrapper (HandlePostEboardVote ))
100+ r .POST ("/eboard/manage" , csh .AuthWrapper (HandleManageEboardVote ))
101+
98102 // TODO: change ALL the response codes to use http.(actual description)
99103 r .GET ("/" , csh .AuthWrapper (func (c * gin.Context ) {
100- cl , _ := c .Get ("cshauth" )
101- claims := cl .(cshAuth.CSHClaims )
102104 // This is intentionally left unprotected
103105 // A user may be unable to vote but should still be able to see a list of polls
106+ user := getUserData (c )
104107
105108 polls , err := database .GetOpenPolls (c )
106109 if err != nil {
@@ -111,27 +114,11 @@ func main() {
111114 return polls [i ].Id > polls [j ].Id
112115 })
113116
114- closedPolls , err := database .GetClosedVotedPolls (c , claims .UserInfo .Username )
115- if err != nil {
116- c .JSON (http .StatusInternalServerError , gin.H {"error" : err .Error ()})
117- return
118- }
119- ownedPolls , err := database .GetClosedOwnedPolls (c , claims .UserInfo .Username )
120- if err != nil {
121- c .JSON (http .StatusInternalServerError , gin.H {"error" : err .Error ()})
122- return
123- }
124- closedPolls = append (closedPolls , ownedPolls ... )
125-
126- sort .Slice (closedPolls , func (i , j int ) bool {
127- return closedPolls [i ].Id > closedPolls [j ].Id
128- })
129- closedPolls = uniquePolls (closedPolls )
130-
131117 c .HTML (http .StatusOK , "index.tmpl" , gin.H {
132118 "Polls" : polls ,
133- "Username" : claims .UserInfo .Username ,
134- "FullName" : claims .UserInfo .FullName ,
119+ "Username" : user .Username ,
120+ "FullName" : user .FullName ,
121+ "EBoard" : slices .Contains (user .Groups , "eboard" ),
135122 })
136123 }))
137124
@@ -598,6 +585,12 @@ func canVote(user cshAuth.CSHUserInfo, poll database.Poll, allowedUsers []string
598585 return 0
599586}
600587
588+ func getUserData (c * gin.Context ) cshAuth.CSHUserInfo {
589+ cl , _ := c .Get ("cshauth" )
590+ user := cl .(cshAuth.CSHClaims ).UserInfo
591+ return user
592+ }
593+
601594func uniquePolls (polls []* database.Poll ) []* database.Poll {
602595 var unique []* database.Poll
603596 for _ , poll := range polls {
0 commit comments