YouROK / TorrServer

Torrent stream server
GNU General Public License v3.0
1.34k stars 178 forks source link

Refactor auth #361

Closed leporel closed 4 months ago

leporel commented 4 months ago

Согласно своему issue https://github.com/YouROK/TorrServer/issues/358 решил создать пулреквест

Единственное, из за того что RouteWebPages мы генерим (_свой роутер для каждого файла - зачем кстати? в go:embed можно папку засунуть целиком embed.FS + gin StaticFS или gin-contrib/static_) без костыля с проверкой FullPath не обойтись (или код генерации подправить, чтобы указывать при генерации, какие роутеры без авторизации доступны).

tsynik commented 4 months ago

Судя по этому issue https://github.com/YouROK/TorrServer/issues/221 site.webmanifest должен быть доступен всегда, без авторизации, или могут быть проблемы добавления на рабочий стол в iOS торрсервера с авторизацией

leporel commented 4 months ago

site.webmanifest должен быть доступен всегда

я сохранил логику с проверкой исключений для путей, я не стал переделывать web под embed.FS не разобравшись

хотя я тут попробовал и понял почему на каждый файл генерится роутер, потому что наверно столкнулись с тем что router.StaticFS("/", http.FS(f)) застолбит все префиксы. В таком случае наверно правильнее было бы проектировать ветки отдельные на роутеры /web /api /msx, / редиректить на /web и проблем не было бы таких.

UPD: В пуллреквесте подправил еще немного, для изолированности кода, чтоб костыль на проверку site.webmanifest не нуждался в реализации пакета auth.

Я потестировал бегло, работает как и должно по идее.

not_auth удилил из api документации потому что это не параметр запроса, а ключ из рантайма gin.Context (поправьте если ошибаюсь)