Beispiel #1
0
def admin_editar(identifier: int):
    """ Edição de usuários """
    usuario = Usuario()
    usuario.select(identifier)
    auth = Auth()
    if usuario.identifier > 0:
        if auth.is_allowed('edita.usuario', usuario):
            populate_from_request(usuario)
            # Apenas usuários que podem editar qualquer usuário (e não apenas si mesmo) podem alterar o nível de perm.
            if auth.is_allowed('edita.usuario') and 'nivel' in request.form:
                usuario.nivel = int(request.form['nivel'])

            # Se estiver alterando o próprio perfil, solicita senha
            if auth.user.identifier == usuario.identifier:
                if 'antiga' not in request.form or len(
                        request.form['antiga']) == 0:
                    return json_response(message='Informe sua senha atual',
                                         data=[]), 400
                elif not Usuario.check_hash(request.form['antiga'],
                                            usuario.senha):
                    return json_response(message='Senha atual incorreta',
                                         data=[]), 400

            if usuario.login_exists(usuario.cpf, usuario.identifier):
                return json_response(
                    message='O CPF já está em uso, utilize outro',
                    data=[]), 400

            # Altera senha apenas se for enviado um valor novo
            if 'senha' in request.form and len(request.form['senha']) > 0:
                if not Usuario.valid_pass(request.form['senha']):
                    return json_response(
                        message='A senha deve ter pelo menos 6 dígitos',
                        data=[]), 400
                else:
                    usuario.senha = Usuario.hash(request.form['senha'])
                    usuario.update_password()

            usuario.data_atualizacao = datetime.datetime.now().strftime(
                "%Y-%m-%d %H:%M:%S")
            if usuario.update():
                Logs(
                    0, auth.user.identifier, auth.user.nome + '(' +
                    auth.user.cpf + ')' + ' editou o usuário ' + usuario.nome +
                    ' (' + usuario.cpf + ')', 'usuario', usuario.identifier,
                    datetime.datetime.now().strftime(
                        "%Y-%m-%d %H:%M:%S")).insert()
                return json_response(message='Usuário atualizado!',
                                     data=[usuario])
            else:
                return json_response(
                    message='Não foi possível editar o usuário', data=[]), 400
        else:
            return json_response(
                message='Você não tem permissão para realizar esta ação',
                data=[]), 403
    else:
        return json_response(message='Usuário não encontrado', data=[]), 404
Beispiel #2
0
def login():
    cpf = request.form.get('login')
    senha = request.form.get('senha')
    usuario = Usuario()
    usuario.select_by_login(cpf)
    if usuario.identifier > 0 and Usuario.check_hash(senha, usuario.senha):
        usuario.permanent = True
        session['user'] = usuario.serialize()
        session['time'] = time.time()
        Logs(0, usuario.identifier,
             usuario.nome + ' (' + usuario.cpf + ')' + ' entrou no sistema',
             'usuario', usuario.identifier,
             datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")).insert()
        return redirect(url_for('home.admin_home'))
    return redirect(url_for('usuarios.entrar', erro=1))