Account: add a dashboard url endpoint.
This lets servers share a dashboard url with clients so that they in turn can present clients with a settings dashboard. We currently use it on the main server, but self-hosted servers may also benefit from it for letting users manage some of their settings (e.g. 2FA).
This commit is contained in:
parent
9152e6f42d
commit
74f40abc65
@ -61,6 +61,13 @@ class AppSettings:
|
|||||||
return self.import_from_str(func)
|
return self.import_from_str(func)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def DASHBOARD_URL_FUNC(self): # pylint: disable=invalid-name
|
||||||
|
func = self._setting("DASHBOARD_URL_FUNC", None)
|
||||||
|
if func is not None:
|
||||||
|
return self.import_from_str(func)
|
||||||
|
return None
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def CHUNK_PATH_FUNC(self): # pylint: disable=invalid-name
|
def CHUNK_PATH_FUNC(self): # pylint: disable=invalid-name
|
||||||
func = self._setting("CHUNK_PATH_FUNC", None)
|
func = self._setting("CHUNK_PATH_FUNC", None)
|
||||||
|
@ -783,6 +783,18 @@ class AuthenticationViewSet(viewsets.ViewSet):
|
|||||||
|
|
||||||
return Response({}, status=status.HTTP_200_OK)
|
return Response({}, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
|
@action_decorator(detail=False, methods=['POST'], permission_classes=BaseViewSet.permission_classes)
|
||||||
|
def dashboard_url(self, request, *args, **kwargs):
|
||||||
|
get_dashboard_url = app_settings.DASHBOARD_URL_FUNC
|
||||||
|
if get_dashboard_url is None:
|
||||||
|
raise EtebaseValidationError('not_supported', 'This server doesn\'t have a user dashboard.',
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
ret = {
|
||||||
|
'url': get_dashboard_url(request, *args, **kwargs),
|
||||||
|
}
|
||||||
|
return Response(ret)
|
||||||
|
|
||||||
|
|
||||||
class TestAuthenticationViewSet(viewsets.ViewSet):
|
class TestAuthenticationViewSet(viewsets.ViewSet):
|
||||||
allowed_methods = ['POST']
|
allowed_methods = ['POST']
|
||||||
|
Loading…
Reference in New Issue
Block a user