Closed davidmz closed 3 years ago
I think it would be better to maintain backwards compatibility. New format can be provided in a separate key for now.
{
"version":"1.99.0",
"externalAuthProviders":["google","facebook"],
"authMethods": [
{ "id": "freefeed", "provider": "password", "title": "FreeFeed password"},
{ "id": "google1", "provider": "google", "title": "Google Sign-In" },
{ "id": "facebook1", "provider": "facebook", "title": "Facebook Login" }
],
"registrationOpen":true
}
^ I suggest to decouple id
which might be arbitrary due to deployment specifics from provider
which can be used to provide custom ui elements (icons, warnings, license, etc.)
Возможно, стоит разбить методы на local и external. Всё таки password и Google/Facebook качественно отличаются.
В частности, сервер может передать сколько угодно внешних провайдеров, и клиент сможет с ними работать, ничего специального про них не зная. А локальные методы требуют отдельной обработки.
это вполне можно разделять по provider
. ну и кроме того я даже не предлагаю сейчас делать обработку password на клиенте. достаточно его отфильтровывать. можно это сделать позже. но я не против выделить local
Я немного подумаю ещё. Изначально я хотел передавать {id, brand, title}, где brand был как раз «классом» провайдера, для визуального отобоажения. Но потом подумал, что это сложновато, и вероятность того, что кому-то потребуются два разных google-провайдера, равна нулю.
Support arbitrary OAuth2 providers, add rich configuration options and configuration templates.
⚠ Warning It is a breaking change! The client must be updated together with the server: freefeed/freefeed-react-client#1199. We also must update the server configuration.
GET /v2/server-info
is changed: the externalAuthProviders field now has a type of{ id: string, title: string }[]
(before it was astring[]
). It enumerates all available external identity providers with their ids and titles, so the client can show the proper buttons even if it doesn't know about these providers.