def before_request(): g.usuario = None if 'nomeusuario' in session: g.usuario = db.get_usuario(session['nomeusuario'])
def logreg(): if g.usuario: return redirect(url_for('index')) erros = [] loginfo = {} if request.method == 'POST': if request.form['btn'] == 'reg': nomeusuario = request.form['nomeusuario'] email = request.form['email'] senha = request.form['password'] nasc = request.form['nasc'] sexo = request.form['sexoradio'] valido = db.validar_usuario(request.form['nomeusuario'], request.form['email']) # Validando nome de usuário ---- if not valido['nomeusuario'] or \ not entre(2, 20, nomeusuario): erros.append(u"Nome de usuário inválido") elif not re.match("^[a-zA-Z0-9_]+$", nomeusuario): erros.append(u"Nome de usuário inválido (use apenas \ caracteres, números e underlines)") # Validando email -------------- if not valido['email'] or not entre(3, 1024, email): erros.append(u"Email inválido") # Validando senha -------------- if len(senha) < 4: erros.append(u"Senha inválida (use pelo menos 4 caracteres") else: m = hashlib.md5() m.update(senha) senha = m.hexdigest() # Validando data --------------- try: nasc = datetime.strptime(nasc, '%d/%m/%Y') except ValueError: erros.append(u"Data inválida (use DD/MM/AAAA)") nasc = nasc.strftime('%Y-%m-%d') # Validando sexo --------------- if(sexo == '/'): erros.append(u"Sexo não informado") else: if(sexo == 'masc'): sexo = 'M' elif(sexo == 'fem'): sexo = 'F' elif(sexo == 'na'): sexo = 'N' if not erros: db.registrar_usuario(nomeusuario, email, senha, nasc, sexo) session['nomeusuario'] = nomeusuario return redirect(url_for('index')) elif request.form['btn'] == 'log': nomeusuario = request.form['nomeusuario'] senha = request.form['password'] usuario = db.get_usuario(nomeusuario) if usuario == None: erros.append(u"Usuário inválido") elif not check_password_hash(senha, usuario['senha']): erros.append(u"Senha incorreta") loginfo['nomeusuario'] = nomeusuario else: session['nomeusuario'] = usuario['nome_usuario'] return redirect(url_for('index')) return render_template('logreg.html', erros=erros, loginfo=loginfo)