diff --git a/auth.go b/auth.go index a05ea0d..eb428da 100644 --- a/auth.go +++ b/auth.go @@ -13,6 +13,7 @@ import ( var LocalAuthFunc = checkAuthKrb5 var allowLocalAuth bool var localAuthUsers arrayFlags +var mainBanner string type loginForm struct { Login string `json:"username"` @@ -47,16 +48,18 @@ func declareAPIAdminAuthRoutes(router *gin.RouterGroup) { session.Update() c.JSON(http.StatusOK, authToken{ - User: newuser, - CurrentPromo: currentPromo, + User: newuser, + CurrentPromo: currentPromo, + MessageBanner: mainBanner, }) }) } type authToken struct { *User - CurrentPromo uint `json:"current_promo"` - Groups []string `json:"groups"` + CurrentPromo uint `json:"current_promo"` + Groups []string `json:"groups"` + MessageBanner string `json:"banner,omitempty"` } func validateAuthToken(c *gin.Context) { @@ -64,7 +67,7 @@ func validateAuthToken(c *gin.Context) { c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"errmsg": "Not connected"}) return } else { - t := authToken{User: u.(*User), CurrentPromo: currentPromo} + t := authToken{User: u.(*User), CurrentPromo: currentPromo, MessageBanner: mainBanner} t.Groups = strings.Split(strings.TrimFunc(t.User.Groups, func(r rune) bool { return !unicode.IsLetter(r) }), ",") @@ -157,6 +160,6 @@ func dummyAuth(c *gin.Context) { c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"errmsg": err.Error()}) return } else { - c.JSON(http.StatusOK, authToken{User: usr, CurrentPromo: currentPromo}) + c.JSON(http.StatusOK, authToken{User: usr, CurrentPromo: currentPromo, MessageBanner: mainBanner}) } } diff --git a/main.go b/main.go index dbad343..0ee30e5 100644 --- a/main.go +++ b/main.go @@ -58,6 +58,7 @@ func main() { var bind = flag.String("bind", ":8081", "Bind port/socket") var dsn = flag.String("dsn", DSNGenerator(), "DSN to connect to the MySQL server") var dummyauth = flag.Bool("dummy-auth", false, "If set, allow any authentication credentials") + flag.StringVar(&mainBanner, "banner-message", mainBanner, "Display a message to connected user, at the top of the screen") flag.StringVar(&DevProxy, "dev", DevProxy, "Proxify traffic to this host for static assets") flag.StringVar(&baseURL, "baseurl", baseURL, "URL prepended to each URL") flag.UintVar(¤tPromo, "current-promo", currentPromo, "Year of the current promotion") diff --git a/ui/src/routes/+layout.svelte b/ui/src/routes/+layout.svelte index 1aec7a2..3f176bc 100644 --- a/ui/src/routes/+layout.svelte +++ b/ui/src/routes/+layout.svelte @@ -29,6 +29,11 @@ ЕРІТА: MCQ and others courses related stuff +{#if $user && $user.banner} +
+ {$user.banner} +
+{/if} {#if isSRS}
{/if}