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): | ||||
|         """Get an org by id""" | ||||
|         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) | ||||
| 
 | ||||
|     async def get_default_org(self): | ||||
|  | ||||
| @ -86,6 +86,7 @@ class UserManager: | ||||
|         self.email_collation = Collation("en", strength=2) | ||||
| 
 | ||||
|         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 | ||||
|     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 | ||||
|     ) -> User: | ||||
|         """create new user in db""" | ||||
|         # pylint: disable=too-many-branches | ||||
|         await self.validate_password(create.password) | ||||
| 
 | ||||
|         hashed_password = get_password_hash(create.password) | ||||
| @ -362,7 +364,7 @@ class UserManager: | ||||
|         except DuplicateKeyError: | ||||
|             raise HTTPException(status_code=400, detail="user_already_exists") | ||||
| 
 | ||||
|         add_to_default_org = False | ||||
|         add_to_org = False | ||||
| 
 | ||||
|         if create.inviteToken: | ||||
|             new_user_invite = None | ||||
| @ -374,10 +376,10 @@ class UserManager: | ||||
|                 print(exc) | ||||
| 
 | ||||
|             if new_user_invite and not new_user_invite.oid: | ||||
|                 add_to_default_org = True | ||||
|                 add_to_org = True | ||||
| 
 | ||||
|         else: | ||||
|             add_to_default_org = True | ||||
|             add_to_org = True | ||||
|             if not is_verified: | ||||
|                 asyncio.create_task(self.request_verify(user, request)) | ||||
| 
 | ||||
| @ -385,8 +387,13 @@ class UserManager: | ||||
|         auto_add_org: Optional[Organization] = None | ||||
| 
 | ||||
|         # if add to default, then get default org | ||||
|         if add_to_default_org: | ||||
|             auto_add_org = await self.org_ops.get_default_org() | ||||
|         if add_to_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 | ||||
|         elif create.newOrg is True: | ||||
| @ -401,7 +408,7 @@ class UserManager: | ||||
| 
 | ||||
|         # if org set, add user to 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 | ||||
| 
 | ||||
|  | ||||
| @ -22,6 +22,8 @@ data: | ||||
| 
 | ||||
|   REGISTRATION_ENABLED: "{{ .Values.registration_enabled | default 0 }}" | ||||
| 
 | ||||
|   REGISTER_TO_ORG_ID: "{{ .Values.registration_org_id }}" | ||||
| 
 | ||||
|   ALLOW_DUPE_INVITES: "{{ .Values.allow_dupe_invites | default 0 }}" | ||||
| 
 | ||||
|   JWT_TOKEN_LIFETIME_MINUTES: "{{ .Values.jwt_token_lifetime_minutes | default 60 }}" | ||||
|  | ||||
| @ -61,6 +61,10 @@ volume_storage_class: | ||||
| # crawler_node_type: | ||||
| 
 | ||||
| registration_enabled: "0" | ||||
| 
 | ||||
| # if set, along with 'registration_enabled', will add registrated users to this org | ||||
| # registration_org_id: "" | ||||
| 
 | ||||
| jwt_token_lifetime_minutes: 1440 | ||||
| 
 | ||||
| # if set to "1", allow inviting same user to same org multiple times | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user