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 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
|
||||
def CHUNK_PATH_FUNC(self): # pylint: disable=invalid-name
|
||||
func = self._setting("CHUNK_PATH_FUNC", None)
|
||||
|
@ -783,6 +783,18 @@ class AuthenticationViewSet(viewsets.ViewSet):
|
||||
|
||||
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):
|
||||
allowed_methods = ['POST']
|
||||
|
Loading…
Reference in New Issue
Block a user