def users_list(): user = cur_user() if user is None or user.get_status() not in ACCESS_GROUP: return redirect( url_for('low_access_level', req_access=STATUS_MODERATOR)) vk_users = VKUser.get_all() users = User.get_all() return render_template('users_list.html', user=user, title='Список пользователей', vk_users=vk_users, users=users)
def login(): form = LoginForm() if form.validate_on_submit(): user = User.get_all() for i in user: check = pbkdf2_sha256.verify(request.form['password'], i.password) # Проверка введенных данных if request.form['login'] == i.login and check == True: session['logged_in'] = True # Начало сессии session['username'] = i.login return redirect('/account') # После успешного входа пользователя перенаправляет в личный кабинет if session['logged_in'] != True: return render_template('login.html', error_text='Неправильный логин или пароль.', form=form) return render_template('login.html', form=form)
def registration(): form = RegForm() if form.validate_on_submit(): users = User.get_all() for i in users: # Проверка на уникальность логина и почты if (form.email.data == i.email): return render_template('reg.html', error_text='Пользователь с такой почтой уже существует', form=form) if (form.login.data == i.login): return render_template('reg.html', error_text='Пользователь с таким логином уже существует', form=form) secret_pass = pbkdf2_sha256.hash(form.password.data) # Шифровка пароля и сохранение пользователя user = User(form.name.data, form.email.data, form.login.data, secret_pass) user.save() session['logged_in'] = True session['username'] = form.login.data return redirect('/') return render_template('reg.html', form=form)
def user_list(vk_user, inc_message): if not validate_vk_user(vk_user): return 'Caller validation error' command = re.search(r'пользователи (\w+)', inc_message.get_text().lower()) if command is None: error_message(vk_user.vk_id, 'Необходимо указать категорию пользователей (БД, ВК или все)') return 'Category not stated error' category = command.group(1) text = '' if category == 'бд' or category == 'все': bd_users = User.get_all() text += 'Пользователи базы: \n' for user in bd_users: if user.vk_user is None: status = 'нет связи с VKUser' else: status = user.vk_user.format_status() text += '— @id{vk_id} ({login}): уровень доступа — {access_level} \n'.format( vk_id = user.vk_id, login = user.login, access_level = status ) if category == 'вк' or category == 'все': vk_users = VKUser.get_all() text += 'Пользователи ВК: \n' for user in vk_users: text += '— @id{vk_id} ({surname} {name}): уровень доступа — {access_level}, зарегистрирован {reg_date} \n'.format( vk_id = user.vk_id, surname = user.surname, name = user.name, access_level = user.format_status(), reg_date = user.format_reg_date() ) if text == '': text = 'На текущий момент соответствующих пользователей нет' OutgoingMessage( to_id = vk_user.vk_id, text = text ).send()
def forget(): form = ForgetPasswordForm() if form.validate_on_submit(): users = User.get_all() check = False for i in users: if (form.email.data == i.email): check = True user_mail = form.email.data random_pass = (''.join([random.choice(list('123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM')) for x in range(8)])) msg = Message('Восстановление пароля', sender="*****@*****.**", recipients=[user_mail]) msg.html = render_template('mail.html', password=random_pass, login=i.login, name=i.name) mail.send(msg) secret_pass = pbkdf2_sha256.hash(random_pass) User.query.filter_by(login=i.login).update(dict(password=secret_pass)) db.session.commit() if check != True: return render_template('forget.html', error_text='Пользователя с таким email не существует.', form=form) return redirect('/') return render_template('forget.html', form=form)
def changemail(): form = ChangeMailForm() if form.validate_on_submit(): # Проверка на правильность пароля и старой почты real_password = User.get_password(session['username']) check = pbkdf2_sha256.verify(request.form['password'], real_password) if check != True: return render_template('change_email.html', error_text = 'Вы ввели неправильный пароль.', form=form) if form.old_email.data != User.get_email(session['username']): return render_template('change_email.html', error_text = 'Вы ввели неправильный старый email.', form=form) # Проверка на уникальность новой почты users = User.get_all() for i in users: if (form.new_email.data == i.email): return render_template('change_email.html', error_text = 'Пользователь с такой почтой уже существует.', form=form) # Сохранение новых данных User.query.filter_by(login=session['username']).update(dict(email=form.new_email.data)) db.session.commit() return redirect('/account') return render_template('change_email.html', form=form)