mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-09-16 21:37:59 +08:00
This splits the backend into two parts: the local backend for desktop cellxgene and the AWS backend for hosted cellxgene. The local backend is in local_server while the hosted remains in server. The general idea is to copy everything from server to local_server, pull unneeded stuff out of local_server, and keep server as-is for this PR. Not touching server means all the infra and deployment code will continue working just as it did before so we can make those changes incrementally.
40 lines
1012 B
Python
40 lines
1012 B
Python
from local_server.auth.auth import AuthTypeBase, AuthTypeFactory
|
|
from flask import session
|
|
from uuid import uuid4
|
|
|
|
|
|
class AuthTypeSession(AuthTypeBase):
|
|
"""Session based authentication. The user is always logged. The user id is a random number
|
|
associated with the session. This is a good choice for desktop servers."""
|
|
|
|
# key in the session token for userid
|
|
CXGUID = "cxguid"
|
|
|
|
def __init__(self, app_config):
|
|
super().__init__()
|
|
|
|
def is_valid_authentication_type(self):
|
|
return True
|
|
|
|
def complete_setup(self, app):
|
|
pass
|
|
|
|
def is_user_authenticated(self):
|
|
# always authenticated
|
|
return True
|
|
|
|
def get_user_id(self):
|
|
if self.CXGUID not in session:
|
|
session[self.CXGUID] = uuid4().hex
|
|
session.permanent = True
|
|
return session[self.CXGUID]
|
|
|
|
def get_user_name(self):
|
|
return "anonymous"
|
|
|
|
def get_user_email(self):
|
|
return None
|
|
|
|
|
|
AuthTypeFactory.register("session", AuthTypeSession)
|