Refactor auth
leporel opened this issue · 0 comments
leporel commented
Не уверен, но наткнувшись на #172 и посмотрев код, подумал что вешать BasicAuth целиком на все роутеры и потом писать исключения для тех где не нужна авторизация (а потом иметь такие вот баги как в ишью выше), не лучше ли просто
func BasicAuth(accounts gin.Accounts) gin.HandlerFunc {
pairs := processAccounts(accounts)
return func(c *gin.Context) {
if !settings.HttpAuth {
return
}
user, found := pairs.searchCredential(c.Request.Header.Get("Authorization"))
if !found {
c.Header("WWW-Authenticate", "Basic realm=Authorization Required")
c.AbortWithStatus(http.StatusUnauthorized)
return
}
c.Set(gin.AuthUserKey, user)
}
}
и в роутерах явно указывать где нужен этот мидлварь
authorized := route.Group("/", BasicAuth(accounts))
route.HEAD("/play/:hash/:id", play)
route.GET("/play/:hash/:id", play)
authorized.GET("/playlistall/all.m3u", allPlayList)
могу попробовать пулреквест сделать если надо