allow configuring designated registration org to which new users can register (#1735)
if 'registration_enabled' is set, check 'registration_org_id' for org id of an existing org that new users should be added to when they register. if omitted, default to the default org Fixes #1729
This commit is contained in:
parent
7ac06608b2
commit
b94070160b
@ -169,6 +169,9 @@ class OrgOps:
|
|||||||
async def get_org_by_id(self, oid: UUID):
|
async def get_org_by_id(self, oid: UUID):
|
||||||
"""Get an org by id"""
|
"""Get an org by id"""
|
||||||
res = await self.orgs.find_one({"_id": oid})
|
res = await self.orgs.find_one({"_id": oid})
|
||||||
|
if not res:
|
||||||
|
raise HTTPException(status_code=400, detail="invalid_org_id")
|
||||||
|
|
||||||
return Organization.from_dict(res)
|
return Organization.from_dict(res)
|
||||||
|
|
||||||
async def get_default_org(self):
|
async def get_default_org(self):
|
||||||
|
|||||||
@ -86,6 +86,7 @@ class UserManager:
|
|||||||
self.email_collation = Collation("en", strength=2)
|
self.email_collation = Collation("en", strength=2)
|
||||||
|
|
||||||
self.registration_enabled = is_bool(os.environ.get("REGISTRATION_ENABLED"))
|
self.registration_enabled = is_bool(os.environ.get("REGISTRATION_ENABLED"))
|
||||||
|
self.register_to_org_id = os.environ.get("REGISTER_TO_ORG_ID")
|
||||||
|
|
||||||
# pylint: disable=attribute-defined-outside-init
|
# pylint: disable=attribute-defined-outside-init
|
||||||
def set_ops(self, org_ops, crawl_config_ops, base_crawl_ops):
|
def set_ops(self, org_ops, crawl_config_ops, base_crawl_ops):
|
||||||
@ -335,6 +336,7 @@ class UserManager:
|
|||||||
self, create: UserCreateIn, request: Optional[Request] = None
|
self, create: UserCreateIn, request: Optional[Request] = None
|
||||||
) -> User:
|
) -> User:
|
||||||
"""create new user in db"""
|
"""create new user in db"""
|
||||||
|
# pylint: disable=too-many-branches
|
||||||
await self.validate_password(create.password)
|
await self.validate_password(create.password)
|
||||||
|
|
||||||
hashed_password = get_password_hash(create.password)
|
hashed_password = get_password_hash(create.password)
|
||||||
@ -362,7 +364,7 @@ class UserManager:
|
|||||||
except DuplicateKeyError:
|
except DuplicateKeyError:
|
||||||
raise HTTPException(status_code=400, detail="user_already_exists")
|
raise HTTPException(status_code=400, detail="user_already_exists")
|
||||||
|
|
||||||
add_to_default_org = False
|
add_to_org = False
|
||||||
|
|
||||||
if create.inviteToken:
|
if create.inviteToken:
|
||||||
new_user_invite = None
|
new_user_invite = None
|
||||||
@ -374,10 +376,10 @@ class UserManager:
|
|||||||
print(exc)
|
print(exc)
|
||||||
|
|
||||||
if new_user_invite and not new_user_invite.oid:
|
if new_user_invite and not new_user_invite.oid:
|
||||||
add_to_default_org = True
|
add_to_org = True
|
||||||
|
|
||||||
else:
|
else:
|
||||||
add_to_default_org = True
|
add_to_org = True
|
||||||
if not is_verified:
|
if not is_verified:
|
||||||
asyncio.create_task(self.request_verify(user, request))
|
asyncio.create_task(self.request_verify(user, request))
|
||||||
|
|
||||||
@ -385,8 +387,13 @@ class UserManager:
|
|||||||
auto_add_org: Optional[Organization] = None
|
auto_add_org: Optional[Organization] = None
|
||||||
|
|
||||||
# if add to default, then get default org
|
# if add to default, then get default org
|
||||||
if add_to_default_org:
|
if add_to_org:
|
||||||
auto_add_org = await self.org_ops.get_default_org()
|
if self.register_to_org_id:
|
||||||
|
auto_add_org = await self.org_ops.get_org_by_id(
|
||||||
|
UUID(self.register_to_org_id)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
auto_add_org = await self.org_ops.get_default_org()
|
||||||
|
|
||||||
# if creating new org, create here
|
# if creating new org, create here
|
||||||
elif create.newOrg is True:
|
elif create.newOrg is True:
|
||||||
@ -401,7 +408,7 @@ class UserManager:
|
|||||||
|
|
||||||
# if org set, add user to org
|
# if org set, add user to org
|
||||||
if auto_add_org:
|
if auto_add_org:
|
||||||
await self.org_ops.add_user_to_org(auto_add_org, user.id)
|
await self.org_ops.add_user_to_org(auto_add_org, user.id, UserRole.CRAWLER)
|
||||||
|
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
|||||||
@ -22,6 +22,8 @@ data:
|
|||||||
|
|
||||||
REGISTRATION_ENABLED: "{{ .Values.registration_enabled | default 0 }}"
|
REGISTRATION_ENABLED: "{{ .Values.registration_enabled | default 0 }}"
|
||||||
|
|
||||||
|
REGISTER_TO_ORG_ID: "{{ .Values.registration_org_id }}"
|
||||||
|
|
||||||
ALLOW_DUPE_INVITES: "{{ .Values.allow_dupe_invites | default 0 }}"
|
ALLOW_DUPE_INVITES: "{{ .Values.allow_dupe_invites | default 0 }}"
|
||||||
|
|
||||||
JWT_TOKEN_LIFETIME_MINUTES: "{{ .Values.jwt_token_lifetime_minutes | default 60 }}"
|
JWT_TOKEN_LIFETIME_MINUTES: "{{ .Values.jwt_token_lifetime_minutes | default 60 }}"
|
||||||
|
|||||||
@ -61,6 +61,10 @@ volume_storage_class:
|
|||||||
# crawler_node_type:
|
# crawler_node_type:
|
||||||
|
|
||||||
registration_enabled: "0"
|
registration_enabled: "0"
|
||||||
|
|
||||||
|
# if set, along with 'registration_enabled', will add registrated users to this org
|
||||||
|
# registration_org_id: ""
|
||||||
|
|
||||||
jwt_token_lifetime_minutes: 1440
|
jwt_token_lifetime_minutes: 1440
|
||||||
|
|
||||||
# if set to "1", allow inviting same user to same org multiple times
|
# if set to "1", allow inviting same user to same org multiple times
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user