Esempio n. 1
0
 def __init__(self, email='', password='', name=''):
     UserMixin.__init__(self)
     self.email = email
     self.name = name
     self.password = password
     self.valid = False
     self.id = ''  # Extra id field for Flask-login requirement
Esempio n. 2
0
def login():
    if request.method == 'POST':
        user = request.form.to_dict()

        #incomplete data
        #incomplete data
        errors = {}
        user['username'] = user['username'].strip().lower()
        if len(user['username']) == 0:
            errors['username'] = '******'t be blank'

        if len(user['password']) == 0:
            errors['password'] = '******'

        user_found = db.users.find_one({
            'username': user['username'],
            'password': user['password']
        })

        #username or password incorrect
        if not user_found:
            errors['not_valid'] = 'username or password is not valid'
            return render_template('login.html', user=user, errors=errors)

        user = UserMixin()
        user.username = user_found['username']
        user.id = user_found['_id'].__str__()
        login_user(user)
        g.user = user
        return redirect(request.args.get("next") or url_for("index"))

    return render_template('login.html', user={'username': '', 'password': ''})
Esempio n. 3
0
  def __init__(self, password=None, **kwargs):
    Principal.__init__(self)
    UserMixin.__init__(self)
    db.Model.__init__(self, **kwargs)

    if self.can_login and password is not None:
      self.set_password(password)
Esempio n. 4
0
def login():
  if current_user.is_authenticated:
        return redirect('/')
  try:
    if request.method == 'POST':
      email = request.form['email']
      password = request.form['password']
      if not (email and password):
        error="Empty field detected"
        return render_template('login.html',error=error)
      cursor=g.conn.execute("SELECT password FROM Users WHERE email='%s'"%email)
      real=''
      for result in cursor:
        real=result['password']
      cursor.close()
      if real==password:
        cur_user = UserMixin()
        cur_user.id=email
        login_user(cur_user)
        print("login successfully")
        #_next=request.args.get('next')
        #print(_next)
        #if not next_is_valid(_next):
        #    return abort(400)
        return redirect('/')
      else:
        error="Email and password don't match"
        return render_template('login.html',error=error)
    else:
      return render_template('login.html')
  except:
    return redirect('/login')
Esempio n. 5
0
 def user_loader(login):
     db_manager = DbManager.Manager()
     if db_manager.get_user(login) is None:
         return
     user = UserMixin()
     user.id = login
     return user
Esempio n. 6
0
    def __init__(self, password=None, **kwargs):
        Principal.__init__(self)
        UserMixin.__init__(self)
        db.Model.__init__(self, **kwargs)

        if self.can_login and password is not None:
            self.set_password(password)
Esempio n. 7
0
def login():
    if request.method == 'POST':
        user = request.form.to_dict()

        #incomplete data
        #incomplete data
        errors = {}
        user['username'] = user['username'].strip().lower()
        if len(user['username']) == 0:
            errors['username'] = '******'t be blank'

        if len(user['password']) == 0:
            errors['password'] = '******'

        user_found = db.users.find_one({'username':user['username'], 'password':user['password']})

        #username or password incorrect
        if not user_found:
            errors['not_valid'] = 'username or password is not valid'
            return render_template('login.html', user = user, errors = errors)

        user = UserMixin()
        user.username = user_found['username']
        user.id = user_found['_id'].__str__()
        login_user(user)
        g.user = user
        return redirect(request.args.get("next") or url_for("index"))
    
    return render_template('login.html', user= {'username':'', 'password':''})
Esempio n. 8
0
def register():
    if request.method == 'POST':
        new_user = request.form.to_dict()

        #incomplete data
        errors = {}
        new_user['username'] = new_user['username'].strip().lower()
        if len(new_user['username']) == 0:
            errors['username'] = '******'t be blank'

        if len(new_user['password']) == 0:
            errors['password'] = '******'

        #user already registered
        if db.users.find_one({'username':new_user['username']}):
            errors['username'] = '******' % new_user['username']
        
        if len(errors) > 0:
            return render_template('register.html', new_user=new_user, errors=errors)

        db.users.save(new_user)

        user = UserMixin()
        user.username = new_user['username']
        user.id = new_user['_id'].__str__()
        login_user(user)

        return redirect(request.args.get("next") or url_for("index"))
    
    elif request.method == 'GET':
        return render_template('register.html', new_user= {'username':'', 'password':'', 'email':''})
Esempio n. 9
0
def create_root(config):
    from flask_login import UserMixin
    import pickle
    root_user = UserMixin()
    root_user.id = 1
    with open(config['ROOT_FILE'], 'wb') as f:
        pickle.dump(root_user, f)
Esempio n. 10
0
def login():

    if request.method == "GET":

        next_ = '/' if ("next" not in request.args) else request.args.get("next")
        params = {
            'formAction': url_for("login_api.login"),
            'next': next_
        }

        return render_template("login.html", **params) # unpack the params dictionary, using its values as named parameters

    elif request.method == "POST":

        data = request.form
        password = str(data["password"])
        username = str(data["username"])
        next_ = str(data["next"])

        # find the hashed password associated with the given username
        passwordHash = database.getPasswordHash(username)

        # error if there is no such username, or the password is incorrect
        if passwordHash == -1 or not util.checkHash(passwordHash, password):
            flash("Invalid username or password", "error")
            return redirect(url_for(".login"))

        userId = database.getUserByName(username)['id']
        user = UserMixin()
        user.id = userId
        login_user(user)
        flash("Log in successful", "success")

        # don't render a template directly off of a POST request; redirect to a GET request, avoiding problems if the user manually reloads the page
        return redirect(next_)
Esempio n. 11
0
def connexion():
    if request.method == 'GET':
        if current_user.is_anonymous:
            return render_template("connexion.html")
        else:
            return redirect(url_for('main'))

    elif request.method == 'POST':
        email = request.form['email']
        password = request.form['password']

        results = c.execute(
            "SELECT prenom, password FROM utilisateur WHERE email=?",
            (email, )).fetchone()

        if results:
            passwordEnBase = results[1]
            if sha256_crypt.verify(password, passwordEnBase):
                user = UserMixin()
                user.id = email
                user.prenom = results[0]
                login_user(user)
                return redirect(url_for('main'))
            else:
                flash(
                    "Votre email et/ou votre mot de passe est incorrect. Veuillez les saisir à nouveau ",
                    "danger")
                return render_template("connexion.html")

        else:
            flash(
                "Votre email et/ou votre mot de passe est incorrect. Veuillez les saisir à nouveau ",
                "danger")
            return render_template("connexion.html")
Esempio n. 12
0
def merge_added_problems(user: UserMixin, new_added_problems: list,
                         new_structure: list) -> list:
    """Прибавление новых заданий"""

    added_problems = loads(user.added_problems)

    # считаем количество новых заданий по каждой теме
    new_counts = jmp.search('[*].topic.count', new_added_problems)

    # если новые задания появились перестраиваем старое дерево разности
    if any(new_counts):
        # вытягиваем списки новых проблем
        new_problems = jmp.search('[*].problems', new_added_problems)

        for count, problems, topic in zip(new_counts, new_problems,
                                          added_problems):
            # прибавляем (а НЕ переписываем!) количества заданий и сами задания
            topic['topic']['count'] += count
            topic['problems'] += problems

        kwargs = dict(indent=2, ensure_ascii=False)
        user.added_problems = dumps(added_problems, **kwargs)
        user.problems = dumps(new_structure, **kwargs)

    return added_problems
Esempio n. 13
0
def load_user(userid):
    #get the user 3
    user_found = db.users.find_one({'_id': ObjectId(userid)})
    user = UserMixin()
    user.username = user_found['username']
    user.id = user_found['_id'].__str__()
    g.user = user
    return user
Esempio n. 14
0
def load_user(userid):
    #get the user 3
    user_found = db.users.find_one({'_id': ObjectId(userid)})
    user = UserMixin()
    user.username = user_found['username']
    user.id = user_found['_id'].__str__()
    g.user = user
    return user
Esempio n. 15
0
 def __init__(self, name, email, password, location, department):
     """Initialize a User model"""
     UserMixin.__init__(self)
     self.name = name
     self.email = email
     self.password = generate_password_hash(password)
     self.location = location
     self.department = department
     self.is_admin = False
Esempio n. 16
0
 def __init__(self, name, email, password, location, department):
     """Initialize a User model"""
     UserMixin.__init__(self)
     self.name = name
     self.email = email
     self.password = generate_password_hash(password)
     self.location = location
     self.department = department
     self.is_admin = False
Esempio n. 17
0
def load_user(user_id):
    userDansLaBase = c.execute("SELECT email, prenom, pro FROM utilisateur WHERE email=?", (user_id,)).fetchone()
    if userDansLaBase is None:
        return None
    user = UserMixin()
    user.id = user_id
    user.prenom = userDansLaBase[1]
    user.pro = userDansLaBase[2]
    return user
Esempio n. 18
0
 def __init__(self, dic=None):
     UserMixin.__init__(self)
     self.curr_order = {}
     if dic is not None:
         self.chef_id = dic['chef_id']
         self.chef_service_year = dic['chef_service_year']
         self.chef_name = dic['chef_name']
         self.chef_rank = dic['chef_rank']
         self.hall_id = dic['hall_id']
Esempio n. 19
0
 def __init__(self, dic=None):
     UserMixin.__init__(self)
     self.curr_order = {}
     if dic is not None:
         self.user_id = dic['user_id']
         self.user_name = dic['user_name']
         self.user_gender = dic['user_gender']
         self.user_sid = dic['user_sid']
         self.user_phone = dic['user_phone']
         self.user_type = dic['user_type']
Esempio n. 20
0
    def __init__(self, db_user):
        """Crée l’objet à partir de la base de donnée

        :db_user: Objet User de la base de donnée

        """
        UserMixin.__init__(self)

        self._db_user = db_user
        self.id = db_user.id
Esempio n. 21
0
def user_loader(user_id):  # user_id為表單資料的['user_id']
    # user_loader是特殊method,雖然接受的是UserMixin() 但會自動取出其中的.id屬性
    print("檢查登入狀態")
    user = UserMixin()
    user.id = user_id  # 產生新的UserMixin()預設是沒有.id這個東西,但在自身的method中卻需要用到, 要補給他才會在current_user.id有紀錄
    # user.is_anonymous 匿名用戶為T 登入用戶為 F
    # user.is_active 帳號啟用 且 登入成功
    # user.get_id() == user.id
    # .is_authenticated是個T/F 這個是辨認有無登入的關鍵 為T時才可以使用@login_required method
    return user
Esempio n. 22
0
    def __init__(self, **kwargs):
        # A bit of duplication here keeps the kwargs being
        # set but encrypts the password.
        for k, v in kwargs.items():
            if k != 'password':
                setattr(self, k, v)
            else:
                self.set_password(v)

        OurMixin.__init__(self)
        UserMixin.__init__(self)
Esempio n. 23
0
    def load_user(user_id):
        with db_connection.cursor() as cursor:
            cursor.execute('SELECT username FROM "user" WHERE username=%s', (user_id,))
            entry = cursor.fetchone()

        if not entry:
            return None

        user = User()
        user.id = entry[0]
        return user
Esempio n. 24
0
 def __init__(self, dic=None):
     UserMixin.__init__(self)
     self.get_order = []
     if dic is not None:
         # print("111111111111111111111111111111")
         self.delivery_id= dic['delivery_id']
         self.delivery_name= dic['delivery_name']
         self.delivery_path = dic['delivery_path']
         self.delivery_service_year= dic['delivery_year']
         self.delivery_phone = dic['delivery_phone']
         self.delivery_rank = dic['delivery_rank']
Esempio n. 25
0
def login():
    error = None
    user = UserMixin()
    user.id = "admin"
    #User[user] = 1
    if request.method == 'POST':
        if request.form['username'] != 'admin' or request.form['password'] != '123':
            error = 'Invalid Credentials. Please try again.'
        else:
            #session['username'] = request.form['username']
            #session.add(user)
            login_user(user)
            return redirect(url_for('home_page'))
    return render_template('login.html', error=error)
Esempio n. 26
0
def login():
    if request.method == 'GET':
        logged_in = 'true' if current_user.get_id(
        ) == ADMIN_USERNAME else 'false'
        return render_template('login.html', logged_in=logged_in)

    if request.form['username'] == ADMIN_USERNAME and request.form[
            'password'] == ADMIN_PASSWORD:
        user = UserMixin()
        user.id = request.form['username']
        login_user(user)
        print(f'Logged in as {user.id}')
        return redirect('/browse.html')
    return render_template('login.html')
Esempio n. 27
0
def verify():
    print('try login')
    user_id = request.form['user_id']  # Flask.request
    if ((user_id in usersinfo['user_id'])
            and (request.form['password']
                 == users[usersinfo['user_id'].index(user_id)][1])):
        # 如果帳密符合資料庫內容 就產生一個UserMixin()紀錄Session 存取id
        user = UserMixin()
        user.id = user_id
        # 會將Session送到@login_manager.user_loader 將其激活
        login_user(user)  #需要@login_manager.user_loader來接收資料
        print('驗證成功')
        return redirect(url_for('success'))  # 這裡的from_start是指method名稱
    else:
        return redirect(url_for('fail'))
    def validate(self):
        """Validate form contents."""
        print("errors are\n{}".format(self.errors))
        if not Form.validate(self):
            print("validation failed")
            return False

        # In this trivial app, a login is valid if
        # 1) the username and password fields are not empty, and
        # 2), the password is the username backwards.
        if self.username.data == self.password.data[::-1]:
            self.user = UserMixin()
            self.user.id = self.username.data
            users[self.user.id] = self.user
            print("we are good")
            # The `remember` flag means our app will remember
            # users even if they close their browser. It uses
            # cookies to accomplish this.
            login_user(self.user, remember=True)
            print("current_user: {}".format(current_user.get_id()))
            return True
        print("invalid password")
        # See this link for why the following pattern is necessary:
        # https://stackoverflow.com/questions/22889295/flask-self-errors-append-attributeerror-tuple-object-has-no-attribute-ap#comment74244200_22889381
        errorlist = list(self.username.errors) # issue
        errorlist.append('Invalid password')
        self.username.errors = errorlist
        flash('invalid passwird')
        print(self.username.errors)
        return False
Esempio n. 29
0
    def signup():
        if flask.request.method == 'GET':
            if flask_login.current_user.is_authenticated:
                return flask.redirect(f'/users/{flask_login.current_user.id}')

            return flask.render_template('signup.html')
        else:
            error_flag, bday, bmonth, byear, email, first_name, last_name, password, re_password, username = \
                validate_form_data()

            if error_flag:
                return flask.redirect(flask.request.referrer)

            with db_connection:
                with db_connection.cursor() as cursor:
                    cursor.execute('SELECT username FROM "user" WHERE username=%s', (username,))
                    if cursor.fetchone():
                        flask.flash('Username already in use')
                        return flask.redirect(flask.request.referrer)

                    if password != re_password:
                        flask.flash('Passwords don\'t match')
                        return flask.redirect(flask.request.referrer)

                    password_hash = hashlib.sha256(password.encode()).hexdigest()
                    birth_date = datetime.date(int(byear), int(bmonth), int(bday))

                    # If this fails, it's a programming error and should be detected, the user will get an internal
                    # server error
                    cursor.execute('INSERT INTO'
                                   '  "user" ('
                                   '    username, '
                                   '    password_hash, '
                                   '    first_name, '
                                   '    last_name, '
                                   '    email, '
                                   '    birth_date)'
                                   'VALUES(%s, %s, %s, %s, %s, %s)',
                                   (username, password_hash, first_name, last_name, email, birth_date))

            user = User()
            user.id = username

            flask_login.login_user(user)

            return flask.redirect(f'/users/{username}')
Esempio n. 30
0
    def save_session(self, user: UserMixin, key: str):
        """ Register new user session at session repository.

            Args:
                user (UserMixin) : User session instance to be registered.
                key (str): Key used to identify the new user session.
        """
        self.users[key] = user
        self.users_id_dict[user.id] = self.users[user.username()]
Esempio n. 31
0
def login_view():
    users = {'testteam': '123321a', 'dev': 'dev2016', 'admin': 'admin.com'}

    for k, v in request.args.iteritems():
        print(k, v)
    result = None
    form = LoginForm()
    if form.validate_on_submit():
        if form.user.data in users and form.password.data == users.get(form.user.data):
            user = UserMixin()
            user.id = form.user.data
            login_user(user=user, remember=True)
            flash(u"登录成功.")

            return redirect(request.args.get("next") or "/")
        else:
            result = u'登录失败,账号不存在或者密码错误'
    return render_template('home/login.html', form=form, result=result)
Esempio n. 32
0
def load_user(request) -> typing.Optional[UserMixin]:
    """
    Verify that the 'Authorization' header equals our secret key.
    Returns an empty `UserMixin` on success.

    Docs: https://flask-login.readthedocs.io/en/latest/#installation
    Example: http://gouthamanbalaraman.com/blog/minimal-flask-login-example.html
    """
    token = str(request.headers.get('Authorization'))
    secret = str(current_app.config['SECRET_KEY'])
    return UserMixin() if token == secret else None
Esempio n. 33
0
def login():
    if request.method == 'GET':
        return render_template('login.html')
    else:
        email = request.form.get('email')
        password = request.form.get('password')
        print(email, password)
        SQL = """
            SELECT password
            FROM `movie.users`
            WHERE email='%s'
            """ % (email)
        try:
            df = pandas_gbq.read_gbq(SQL)
            print('success')
            print(df)
            if len(df) > 0:
                if df.iloc[0].password == password:
                    #print('iam here')
                    cur_user = UserMixin()
                    cur_user.id = email
                    login_user(cur_user)
                    session['user_email'] = email
                    SQL = """
                            SELECT uid
                            FROM `movie.users`
                            WHERE email='%s'
                            """ % (email)
                    df = pandas_gbq.read_gbq(SQL)
                    session['user_id'] = int(df.iloc[0].uid)
                    session.permenant = True
                    return redirect(url_for('index'))
                else:
                    error = 'email or password is wrong, try again'
                    return render_template('login.html', error=error)
            else:
                error = 'user does not exist'
                return render_template('login.html', error=error)
        except:
            error = 'something wrong try again'
            return render_template('login.html', error=error)
Esempio n. 34
0
 def __str__(self):
     msg = UserMixin.__str__(self)
     return "{} (id: {}, name: {}, backend: {}, admin: {}, moderator: {}, authenticated: {}, active: {})".format(
         msg,
         self.get_id(),
         self.name,
         self.backend,
         self.is_admin,
         self.is_moderator,
         self.is_authenticated,
         self.is_active,
     )
Esempio n. 35
0
 def __str__(self):
     msg = UserMixin.__str__(self)
     return '{} (id: {}, name: {}, backend: {}, admin: {}, moderator: {}, authenticated: {}, active: {})'.format(
         msg,
         self.get_id(),
         self.name,
         self.backend,
         self.is_admin,
         self.is_moderator,
         self.is_authenticated,
         self.is_active
     )
Esempio n. 36
0
def register():
    if request.method == 'POST':
        new_user = request.form.to_dict()

        #incomplete data
        errors = {}
        new_user['username'] = new_user['username'].strip().lower()
        if len(new_user['username']) == 0:
            errors['username'] = '******'t be blank'

        if len(new_user['password']) == 0:
            errors['password'] = '******'

        #user already registered
        if db.users.find_one({'username': new_user['username']}):
            errors[
                'username'] = '******' % new_user[
                    'username']

        if len(errors) > 0:
            return render_template('register.html',
                                   new_user=new_user,
                                   errors=errors)

        db.users.save(new_user)

        user = UserMixin()
        user.username = new_user['username']
        user.id = new_user['_id'].__str__()
        login_user(user)

        return redirect(request.args.get("next") or url_for("index"))

    elif request.method == 'GET':
        return render_template('register.html',
                               new_user={
                                   'username': '',
                                   'password': '',
                                   'email': ''
                               })
Esempio n. 37
0
def get_user(user_id=None, username=None):
    global _users_data

    if not _users_data:

        _users_data = {}

        with open(os.path.join(const.DATA_DIR, "users.csv")) as f:
            user_dict = util.csv_to_array_of_dicts(f)

        for user in user_dict:
            new_user = UserMixin()
            new_user.id = user["id"]
            new_user.username = user["name"]
            new_user.password = user["password"]

            _users_data[new_user.get_id()] = new_user

    if user_id is None:
        for user in _users_data.values():
            if user.username == username:
                return user
    if user_id in _users_data:
        return _users_data[user_id]
    else:
        return False
Esempio n. 38
0
def load_user(user_id):
    users = {'testteam': '123321a', 'dev': 'dev2016', 'admin': 'admin.com'}
    if user_id in users:
        user = UserMixin()
        user.id = user_id
        return user
Esempio n. 39
0
 def init(self, *args, **kwargs):
     UserMixin.__init__(self, *args, **kwargs)
     self.data = None
Esempio n. 40
0
 def get_user(user_id):
   user = UserMixin()
   user.id = user_id
   user.is_authenticated = lambda: user.id in app.config['ALLOWED_USERS']
   return user