def __check_in_local_known_user(db_user: User, password: str, _tn) -> dict: """ Tries to check in a local known user. :param db_user: current instance of User :param password: password of the user :param _tn: instance of current translator :return: dict() """ LOG.debug("user: %s", db_user.nickname) if db_user.validate_password(PW_FOR_LDAP_USER): # is ldap data = verify_ldap_user_data(db_user.nickname, password, _tn) if data['error']: LOG.debug("Invalid password for the ldap user") return {'error': data['error']} else: return {'user': db_user} # check no-ldap user elif db_user.validate_password(password): return {'user': db_user} else: LOG.debug("Invalid password for the local user") return {'error': _tn.get(_.userPasswordNotMatch)}
def checks_if_user_is_ldap_user(db_user: User) -> bool: """ Checks if user is ldap user :param db_user :return: """ pw_for_ldap_user = '******' return db_user.validate_password(pw_for_ldap_user)
def __check_in_local_known_user(db_user: User, password: str, _tn) -> dict: """ Tries to check in a local known user. :param db_user: current instance of User :param password: password of the user :param _tn: instance of current translator :return: dict() """ logger('Auth.Login', 'user: {}'.format(db_user.nickname)) if db_user.validate_password(password): return {'user': db_user} if not (db_user.validate_password('NO_PW_BECAUSE_LDAP') or db_user.password is get_hashed_password('NO_PW_BECAUSE_LDAP')): logger('Auth.Login', 'invalid password for the local user') return {'error': _tn.get(_.userPasswordNotMatch)} data = verify_ldap_user_data(db_user.nickname, password, _tn) if data['error']: return {'error': data['error']} return {'user': db_user}
def prepare_extras_dict(self, current_slug: str, is_reportable: bool, show_bar_icon: bool, show_graph_icon: bool, registry: Registry, application_url: str, path: str, db_user: User, broke_limit=False, add_premise_container_style='display: none', add_statement_container_style='display: none', ongoing_discussion=True): """ Creates the extras.dict() with many options! :param current_slug: :param is_reportable: Same as discussion.bubbles.last.is_markable, but TAL has no last indicator :param show_bar_icon: True, if the discussion space should show the graph icon :param show_graph_icon: True, if the discussion space should show the barometer icon :param registry: Pyramids registry :param application_url: current app url :param path: current path :param db_user: User :param broke_limit: Boolean :param add_premise_container_style: style string, default 'display:none;' :param add_statement_container_style: style string, default 'display:none;' :param ongoing_discussion: Boolean :return: dict() """ LOG.debug("Entering prepare_extras_dict") is_user_from_ldap = False is_logged_in = False nickname = None public_nickname = None is_user_male = False is_user_female = False is_admin = False is_special = False if db_user: is_user_from_ldap = db_user.validate_password(PW_FOR_LDAP_USER) is_logged_in = True nickname = db_user.nickname public_nickname = db_user.public_nickname is_user_male = db_user.gender == 'm' is_user_female = db_user.gender == 'f' is_admin = db_user.is_admin() is_special = db_user.is_special() if db_user.nickname == nick_of_anonymous_user: db_user = None is_logged_in = False return_dict = dict() return_dict['url'] = get_global_url() return_dict['year'] = datetime.datetime.now().year return_dict['restart_url'] = current_slug return_dict['is_in_discussion'] = 'discuss' in path return_dict['logged_in'] = is_logged_in return_dict['nickname'] = nickname return_dict['public_nickname'] = public_nickname return_dict[ 'add_premise_container_style'] = add_premise_container_style return_dict[ 'add_statement_container_style'] = add_statement_container_style return_dict['users_avatar'] = get_profile_picture(db_user, 25) return_dict['ongoing_discussion'] = ongoing_discussion return_dict['slug'] = current_slug return_dict['is_user_male'] = is_user_male return_dict['is_user_female'] = is_user_female return_dict['is_user_neutral'] = not return_dict[ 'is_user_male'] and not return_dict['is_user_female'] return_dict['broke_limit'] = 'true' if broke_limit else 'false' return_dict['use_with_ldap'] = is_user_from_ldap return_dict['development_mode'] = is_development_mode(registry) return_dict['is_development'] = registry.settings.get( 'mode', '') == 'development' return_dict['is_production'] = registry.settings.get( 'mode', '') == 'production' return_dict['review_count'] = get_complete_review_count(db_user) return_dict['modern_bubbles'] = usage_of_modern_bubbles(registry) return_dict['usage_of_matomo'] = usage_of_matomo(registry) self.add_language_options_for_extra_dict(return_dict) is_author, points = get_reputation_of(db_user) is_author_bool = is_author or points > limit_to_open_issues return_dict['is_reportable'] = is_reportable return_dict['is_admin'] = is_admin return_dict['is_special'] = is_special return_dict['is_author'] = is_author_bool return_dict['is_user'] = not (is_admin or is_author_bool or is_special) return_dict['show_bar_icon'] = show_bar_icon return_dict['show_graph_icon'] = show_graph_icon return_dict['close_premise_container'] = True return_dict['close_statement_container'] = True return_dict['date'] = arrow.utcnow().format('DD-MM-YYYY') return_dict['count_of'] = { 'arguments': DBDiscussionSession.query(Argument).count(), 'users': DBDiscussionSession.query(User).count(), 'discussions': DBDiscussionSession.query(Issue).count(), 'reviews': get_count_of_all(), } self.__add_title_text(return_dict, is_logged_in) self.__add_button_text(return_dict) self.__add_tag_text(return_dict) self.__add_login_button_properties(return_dict) message_dict = dict() message_dict['new_count'] = count_of_new_notifications( db_user) if db_user else 0 message_dict['has_unread'] = message_dict['new_count'] > 0 inbox = get_box_for(db_user, self.system_lang, application_url, True) if db_user else [] outbox = get_box_for(db_user, self.system_lang, application_url, False) if db_user else [] message_dict['inbox'] = inbox message_dict['outbox'] = outbox message_dict['total_in'] = len(inbox) message_dict['total_out'] = len(outbox) return_dict['notifications'] = message_dict return return_dict