:param user_data: Example user_data={ 'username': 'test_user', 'email': 'test@test.com', 'password': 'diffgram123', 'project_string_id': 'myproject' } :return:
(user_data: dict, session)
| 140 | |
| 141 | |
| 142 | def register_user(user_data: dict, session): |
| 143 | """ |
| 144 | |
| 145 | :param user_data: |
| 146 | Example |
| 147 | user_data={ |
| 148 | 'username': 'test_user', |
| 149 | 'email': 'test@test.com', |
| 150 | 'password': 'diffgram123', |
| 151 | 'project_string_id': 'myproject' |
| 152 | |
| 153 | } |
| 154 | :return: |
| 155 | """ |
| 156 | # User registration |
| 157 | password_hash = hashing_functions.make_password_hash( |
| 158 | user_data['email'], |
| 159 | user_data['password']) |
| 160 | |
| 161 | # TODO could insert logic here to attach a user to a project based on say the sigup code |
| 162 | # ie signup_code.something? |
| 163 | |
| 164 | username = user_data['username'] |
| 165 | user_email = user_data['email'] |
| 166 | |
| 167 | new_user = User( |
| 168 | email = user_email, |
| 169 | password_hash = password_hash, |
| 170 | username = username, |
| 171 | api_enabled_builder = True, |
| 172 | api_enabled_trainer = True, |
| 173 | security_email_verified = True, |
| 174 | last_builder_or_trainer_mode = 'builder', |
| 175 | member_id = user_data.get('member_id'), |
| 176 | permissions_general = {'general': ['normal_user']} |
| 177 | |
| 178 | ) |
| 179 | member = register_member(new_user, session = session) |
| 180 | new_user.permissions_projects = { |
| 181 | user_data.get('project_string_id'): user_data.get('project_roles', ['admin']) |
| 182 | } |
| 183 | project = Project.get_by_string_id(session = session, project_string_id = user_data.get('project_string_id')) |
| 184 | if project and not user_data.get('no_roles'): |
| 185 | from shared.database.project_perms import ProjectDefaultRoles |
| 186 | project.create_default_roles(session = session) |
| 187 | for role_name in user_data.get('project_roles', ['admin']): |
| 188 | default_roles_list = [x.value for x in list(ProjectDefaultRoles)] |
| 189 | if role_name in default_roles_list: |
| 190 | RoleMemberObject.new( |
| 191 | session = session, |
| 192 | member_id = member.id, |
| 193 | object_id = project.id, |
| 194 | object_type = ValidObjectTypes.project, |
| 195 | default_role_name = ProjectDefaultRoles[role_name] |
| 196 | ) |
| 197 | session.add(new_user) |
| 198 | |
| 199 | if 'project_string_id' in user_data: |
no test coverage detected