PHPackages                             iauusp/intranet-permission-ci4 - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. iauusp/intranet-permission-ci4

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

iauusp/intranet-permission-ci4
==============================

Filter para uso com o CodeIgniter 4 para consumo da API de permissões da Intranet do IAU

v1.0.0(1y ago)012GPL-2.0-or-laterPHPPHP ^8.1

Since Nov 29Pushed 1y ago1 watchersCompare

[ Source](https://github.com/iauusp/intranetPermissionCI4)[ Packagist](https://packagist.org/packages/iauusp/intranet-permission-ci4)[ RSS](/packages/iauusp-intranet-permission-ci4/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (3)Versions (2)Used By (0)

Intranet Permission CI4
=======================

[](#intranet-permission-ci4)

Esse pacote trata-se de um Filter para ser utilizado com o framework CodeIgniter 4 (CI4) para consumo da API de permissões da intranet do Instituto de Arquitetura e Urbanismo (IAU). Ele trabalha em conjunto com a biblioteca de autenticação senhaunica-ci4, que faz a autenticação no sistema, coletando os dados do usuário e consultando na base da intranet do IAU se o usuário possui permissão de acesso ao sistema e, em caso afirmativo, qual seu nível de permissão.

As diretivas necessárias para seu funcionamento são definidas no arquivo .env do CI4 e serão explicadas adiante.

Instalação
==========

[](#instalação)

```
composer require iauusp/intranet-permission-ci4

```

Configuração
============

[](#configuração)

Arquivo app/Config/Filters.php
------------------------------

[](#arquivo-appconfigfiltersphp)

Após a instalação, deve ser criado um alias no arquivo app/Config/Filters.php para apontar para o Filter. Exemplo:

```
...
use Iauusp\IntranetPermissionCi4\PermissionFilter;

class Filters extends BaseFilters
{
...
public array $aliases = [
...
'intranetPermission' => PermissionFilter::class
...

```

Arquivo app/Config/Routes.php
-----------------------------

[](#arquivo-appconfigroutesphp)

Após a criação do alias do Filter, basta fazer a chamada nas Rotas desejadas, no arquivo app/Config/Routes.php, incluindo nas configurações destas rotas a chamada *'filter' =&gt; 'intranetPermission'*. Exemplo:

```
$routes->get('/', 'Teste::index',  ['as' => 'index', 'filter' => 'intranetPermission']);

```

A chamada sem argumentos exige apenas que o usuário esteja logado, sem permissões especiais. Pode-se passar como argumento o tipo de acesso mínimo necessário para acesso à rota, sendo aceitos 5 níveis diferentes, listados a seguir, em ordem crescente:

- Usuario
- Intermediario
- Avancado
- Gerente
- Administrador

Por exemplo, numa chamada de rota para permissão mínima "Avancado", os usuários com permissão "Avancado", "Gerente" e "Administrador" teriam acesso. Os de nível "Intermediario", "Usuario" ou aqueles sem permissões especiais cadastradas seriam negados. Neste caso, a chamada do Filter no arquivo Routes.php ficaria da seguinte forma:

```
$routes->get('/', 'Teste::index',  ['as' => 'index', 'filter' => 'intranetPermission:Avancado:']);

```

Arquivo .env
------------

[](#arquivo-env)

No arquivo .env são configuradas as diretivas necessárias para o funcionamento do Filter. São apresentadas e explicadas a seguir:

### Configuração para uso da Senha Única USP

[](#configuração-para-uso-da-senha-única-usp)

**SENHAUNICA\_KEY** = key do sistema USP para autenticação no sistema
**SENHAUNICA\_SECRET** = chave cadastrada no sistema USP
**SENHAUNICA\_CALLBACK\_ID** = ID do sistema cadastrado

### Configuração da API para permissões Intranet IAU

[](#configuração-da-api-para-permissões-intranet-iau)

**API\_SYSTEM\_ID** = ID do sistema na base da Intranet do IAU
**API\_TOKEN** = Token do sistema na base da Intranet do IAU
**API\_BASE\_URL** = URL para consulta da permissão
**API\_REDIRECT\_ROUTE** = nome da rota para redirecionamento após sucesso no login E para acesso negado, caso o logout automático esteja setado como false
**API\_LOGIN\_ROUTE** = nome da rota para redirecionamento do login do sistema
**API\_LOGOUT\_ON\_DENIED** = true|false - define se, ao entrar numa rota não permitida, se o logout deve ser efetuado ou não. Caso false, o usuário é redrecionado para a rota configurada em API\_REDIRECT\_ROUTE

Comportamento
=============

[](#comportamento)

Ao utilizar o Filter, o sistema segue o seguinte fluxo:

 ```
graph LR
A(Tentativa de acesso à uma Rota Protegida) --> B{Usuário Está Logado?}
B -- Sim --> C{Foi consultada a permissão na API?}
C -- Sim --> D{Usuário possui acesso?}
D -- Sim --> G(Permite Acesso)
C -- Não --> H(Consulta API)
H --> D
D -- Não --> I{API_LOGOUT_ON_DENIED true ou false?}
I -- true --> J(Realiza logout e redireciona para página de API_REDIRECT_ROUTE)
I -- false --> L(Redireciona para API_LOGIN_ROUTE)
B -- Nâo --> E(Redireciona para página de Login)
E -- Login Realizado --> A
```

      Loading Sessão em caso de sucesso
=========================

[](#sessão-em-caso-de-sucesso)

Caso o usuário esteja logado e com permissão para Rota desejada, as seguintes sessões são criadas e podem ser resgatadas da seguinte forma:

- session()-&gt;get('oauth\_user.loginUsuario') =&gt; Nº USP do Usuário
- session()-&gt;get('oauth\_user.nomeUsuario') =&gt; Nome completo do Usuário
- session()-&gt;get('oauth\_user.emailPrincipalUsuario') =&gt; E-mail principal do Usuário
- session()-&gt;get('user\_permission') =&gt; Permissão do Usuário para o sistema selecionado (Administrador, Gerente, Avancado, Intermediario, Usuario ou Logado)
- session()-&gt;get('user\_level') =&gt; valor inteiro referente ao campo user\_permission, sendo Administrador=5, Gerente=4, Avancado=3, Intermediario=2, Usuario=1 ou Logado=0

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance38

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

529d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e8287939c88a7e39fcce45eeed8571681c146171d0a0eb242828809cea32a4f1?d=identicon)[iau.sti](/maintainers/iau.sti)

---

Top Contributors

[![dpicon83](https://avatars.githubusercontent.com/u/42186450?v=4)](https://github.com/dpicon83 "dpicon83 (10 commits)")

### Embed Badge

![Health badge](/badges/iauusp-intranet-permission-ci4/health.svg)

```
[![Health](https://phpackages.com/badges/iauusp-intranet-permission-ci4/health.svg)](https://phpackages.com/packages/iauusp-intranet-permission-ci4)
```

###  Alternatives

[josiasmontag/laravel-recaptchav3

Recaptcha V3 for Laravel package

2641.6M2](/packages/josiasmontag-laravel-recaptchav3)[simplesamlphp/simplesamlphp-module-oidc

A SimpleSAMLphp module adding support for the OpenID Connect protocol

5016.9k1](/packages/simplesamlphp-simplesamlphp-module-oidc)[descope/descope-php

Descope SDK for PHP

3814.0k](/packages/descope-descope-php)[njoguamos/laravel-turnstile

A laravel wrapper for https://developers.cloudflare.com/turnstile/

2315.9k2](/packages/njoguamos-laravel-turnstile)[truckersmp/steam-socialite

Laravel Socialite provider for Steam OpenID.

1516.7k](/packages/truckersmp-steam-socialite)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
