示例#1
0
def register():
    # get : irá se registrar
    # post: registra
    if request.method == 'POST':
        login = request.form['usuario']
        senha = request.form['senha']
        db = conecta()
        erro = None

        if not login:
            erro = 'Nome de usuário é necessário.'
        elif not senha:
            erro = 'Senha é necessária.'
        elif db.execute('SELECT id FROM user WHERE username = ?',
                        (login, )).fetchone() is not None:
            erro = 'Usuário {} já está registrado.'.format(login)

        if erro is None:
            db.execute('INSERT INTO user (username, password) VALUES (?, ?)',
                       (login, generate_password_hash(senha)))

            db.commit()
            return redirect(url_for('auth.login'))

        flash(erro)

    return render_template('auth/register.html')
示例#2
0
def login():
    # get: irá se logar
    # post: efetua o login
    if request.method == 'POST':
        login = request.form['usuario']
        senha = request.form['senha']
        db = conecta()
        erro = None
        usuario = db.execute('select * from user where username = ?',
                             (login, )).fetchone()

        if not login:
            erro = 'Usuário é necessário.'
        elif not check_password_hash(usuario['password'], senha):
            erro = 'Senha é necessária.'

        if erro is None:
            session.clear()
            session['id'] = usuario['id']
            return redirect(url_for('index'))


# mario, 123
        flash(erro)

    return render_template('auth/login.html')
示例#3
0
def carrega_usuario_logado(
):  # decorador que retorna o estado de login do usuário
    id_usuario = session.get('id')
    if id_usuario is None:
        g.usuario = None
    else:
        g.usuario = conecta().execute('select * from user where id = ?',
                                      (id_usuario, )).fetchone()
示例#4
0
def get_post(id, checa_autor=True):  # retorna um post (tupla) pelo id
    post = conecta().execute(
        'SELECT p.id, title, body, created, author_id, username'
        ' FROM post p JOIN user u ON p.author_id = u.id'
        ' WHERE p.id = ?', (id, )).fetchone()

    if post is None:
        abort(404, "Post de id {0} não existe.".format(id))

    if checa_autor and post['author_id'] != g.usuario['id']:
        abort(403)  # erro de falta de permissão

    return post
示例#5
0
def create_post():  # cria um novo post com título, corpo pelo id do autor
    if request.method == 'POST':
        titulo = request.form['titulo']
        corpo = request.form['corpo']
        erro = None

        if not titulo:
            erro = 'Título é necessário.'

        if erro is not None:
            flash(erro)
        else:
            db = conecta()
            db.execute(
                'INSERT INTO post (title, body, author_id)'
                ' VALUES (?, ?, ?)', (titulo, corpo, g.usuario['id']))
            db.commit()
            return redirect(url_for('blog.index'))

    return render_template('blog/create.html')
示例#6
0
def update_post(id):  # atualiza um post por seu id
    post = get_post(id)

    if request.method == 'POST':
        titulo = request.form['titulo']
        corpo = request.form['corpo']
        erro = None

        if not titulo:
            erro = 'Título é necessário.'

        if erro is not None:
            flash(erro)
        else:
            db = conecta()
            db.execute('UPDATE post SET title = ?, body = ? WHERE id = ?',
                       (titulo, corpo, id))
            db.commit()
            return redirect(url_for('blog.index'))

    return render_template('blog/update.html', post=post)
示例#7
0
def index():  # retorna todos os posts na página principal
    db = conecta()
    posts = db.execute('SELECT p.id, title, body, created, author_id, username'
                       ' FROM post p JOIN user u ON p.author_id = u.id'
                       ' ORDER BY created DESC').fetchall()
    return render_template('blog/index.html', posts=posts)
示例#8
0
def delete_post(id):  # delete o post pelo id
    post = get_post(id)
    db = conecta()
    db.execute('delete from post where id = ?', (id, ))
    db.commit()
    return redirect(url_for('index'))