def create(self, data): # no re-password self.check_params(data["nick_name"], data["email"], data["password"], data["password"]) # check nick name try: data["eid"] = data["enterprise_id"] user_repo.get_enterprise_user_by_username(data["eid"], data["nick_name"]) raise UserExistError("{} already exists.".format(data["nick_name"])) except Users.DoesNotExist: pass if data.get("email", ""): user = user_repo.get_user_by_email(data["email"]) if user is not None: raise EmailExistError("{} already exists.".format(data["email"])) if data.get("phone", ""): user = user_repo.get_user_by_phone(data["phone"]) if user is not None: raise PhoneExistError("{} already exists.".format(data["phone"])) user = { "nick_name": data["nick_name"], "password": encrypt_passwd(data["email"] + data["password"]), "email": data.get("email", ""), "phone": data.get("phone", ""), "enterprise_id": data["eid"], "is_active": data.get("is_active", True), "create_time": datetime.now().strftime('%Y-%m-%d %H:%M:%S'), } return Users.objects.create(**user)
def get_or_create_user_and_enterprise(self, oauth_user): try: user = user_repo.get_enterprise_user_by_username( oauth_user.enterprise_id, oauth_user.name) except Users.DoesNotExist: user_info = dict() user_info["email"] = oauth_user.email user_info["nick_name"] = oauth_user.name user_info["client_ip"] = oauth_user.client_ip user_info["phone"] = oauth_user.phone user_info["real_name"] = oauth_user.real_name user_info["is_active"] = 1 password = "******" user_info["enterprise_center_user_id"] = oauth_user.id user = Users(**user_info) user.set_password(password) user.save() enterprise = enterprise_services.get_enterprise_by_enterprise_id( oauth_user.enterprise_id) if not enterprise: enterprise = enterprise_services.create_oauth_enterprise( oauth_user.enterprise_domain, oauth_user.enterprise_name, oauth_user.enterprise_id) user_services.make_user_as_admin_for_enterprise( user.user_id, enterprise.enterprise_id) user.enterprise_id = enterprise.enterprise_id user.save() return user
def get_user_by_user_name(self, eid, user_name): user = user_repo.get_enterprise_user_by_username(eid, username=user_name) if not user: return None else: return user
def sync_market_plugin_templates(self, tenant, plugin_data): plugin_template = market_api.get_plugin_templates(tenant.tenant_id, plugin_data.get('plugin_key'), plugin_data.get('version')) market_plugin = plugin_template.get('plugin') if not market_plugin: return True rcps = RainbondCenterPlugin.objects.filter( plugin_key=market_plugin.get('plugin_key'), version=market_plugin.get('major_version'), enterprise_id__in=[tenant.enterprise_id, "public"]) rcp = None if rcps: # 优先获取企业的插件 enter_rcp = rcps.filter(enterprise_id=tenant.enterprise_id) if enter_rcp: rcp = enter_rcp[0] else: rcp = rcps[0] if rcp: rcp.share_user = 0 user_name = market_plugin.get('share_user') if user_name: try: user = user_repo.get_enterprise_user_by_username(tenant.enterprise_id, user_name) rcp.share_user = user.user_id except Exception as e: logger.exception(e) rcp.plugin_template = market_plugin.get("template").get('template_content') rcp.pic = market_plugin.get('logo') rcp.desc = market_plugin.get('intro') rcp.version = market_plugin.get('major_version') rcp.details = market_plugin.get("desc", "") rcp.is_complete = True rcp.save() return True else: enterprise_id = tenant.enterprise_id rcp = RainbondCenterPlugin( plugin_key=market_plugin.get('plugin_key'), plugin_name=market_plugin.get('name'), version=market_plugin.get('major_version'), desc=market_plugin.get('intro'), pic=market_plugin.get('logo'), build_version=market_plugin.get('build_version'), record_id=0, category=market_plugin.get('category'), scope='goodrain', source='market', share_user=0, share_team='', enterprise_id=enterprise_id, plugin_template=market_plugin.get("template").get('template_content'), is_complete=True, details=market_plugin.get("desc", "")) rcp.save() return True
def set_oauth_user_relation(self, api, oauth_service, oauth_user, access_token, refresh_token, code, user=None): oauth_user.id = str(oauth_user.id) if api.is_communication_oauth(): logger.debug(oauth_user.name) user = user_repo.get_enterprise_user_by_username( oauth_user.enterprise_id, oauth_user.name) authenticated_user = oauth_user_repo.user_oauth_exists( service_id=oauth_service.ID, oauth_user_id=oauth_user.id) if authenticated_user is not None: authenticated_user.oauth_user_id = oauth_user.id authenticated_user.oauth_user_name = oauth_user.name authenticated_user.oauth_user_email = oauth_user.email authenticated_user.access_token = access_token authenticated_user.refresh_token = refresh_token authenticated_user.code = code if user: authenticated_user.user_id = user.user_id authenticated_user.save() if authenticated_user.user_id is not None: login_user = user_repo.get_by_user_id( authenticated_user.user_id) payload = jwt_payload_handler(login_user) token = jwt_encode_handler(payload) response = Response({"data": { "bean": { "token": token } }}, status=200) if api_settings.JWT_AUTH_COOKIE: expiration = (datetime.datetime.now() + datetime.timedelta(days=30)) response.set_cookie(api_settings.JWT_AUTH_COOKIE, token, expires=expiration) return response else: rst = { "oauth_user_name": oauth_user.name, "oauth_user_id": oauth_user.id, "oauth_user_email": oauth_user.email, "service_id": authenticated_user.service_id, "oauth_type": oauth_service.oauth_type, "is_authenticated": authenticated_user.is_authenticated, "code": code, } msg = "user is not authenticated" return Response( {"data": { "bean": { "result": rst, "msg": msg } }}, status=200) else: usr = oauth_user_repo.save_oauth( oauth_user_id=oauth_user.id, oauth_user_name=oauth_user.name, oauth_user_email=oauth_user.email, user_id=(user.user_id if user else None), code=code, service_id=oauth_service.ID, access_token=access_token, refresh_token=refresh_token, is_authenticated=True, is_expired=False, ) rst = { "oauth_user_name": usr.oauth_user_name, "oauth_user_id": usr.oauth_user_id, "oauth_user_email": usr.oauth_user_email, "service_id": usr.service_id, "oauth_type": oauth_service.oauth_type, "is_authenticated": usr.is_authenticated, "code": code, } if user: payload = jwt_payload_handler(user) token = jwt_encode_handler(payload) response = Response({"data": { "bean": { "token": token } }}, status=200) if api_settings.JWT_AUTH_COOKIE: expiration = (datetime.datetime.now() + api_settings.JWT_EXPIRATION_DELTA) response.set_cookie(api_settings.JWT_AUTH_COOKIE, token, expires=expiration, httponly=True) return response msg = "user is not authenticated" return Response({"data": { "bean": { "result": rst, "msg": msg } }}, status=200)
def get_enterprise_user_by_username(self, user_name, eid): return user_repo.get_enterprise_user_by_username(eid, user_name)