ufvjm/graphql-client

用于向UFVJM的GraphQL API发送请求的GraphQL客户端。

0.0.20 2024-08-21 19:26 UTC

This package is auto-updated.

Last update: 2024-09-21 19:43:09 UTC


README

Pipeline Coverage Latest Stable Version Total Downloads Latest Unstable Version License

Client GraphQL - UFVJM

一个用于向UFVJM的GraphQL服务器发送请求的PHP库。

摘要

使用此库

预置要求

将库作为依赖项添加

在项目根目录下,执行 composer

  • 通过Composer直接
composer require ufvjm/graphql-client
  • 或通过Docker容器
docker run --rm --interactive --tty \
    --volume $PWD:/app \
    composer require ufvjm/graphql-client

定义环境变量

正确设置以下环境变量

应用程序的Client Id和Client Key

.env 文件中为与微服务集成的文件设置正确的值。

GRAPHQL_APP_IDGRAPHQL_APP_KEY 的值替换为在DTI/DDS微服务堆栈中注册的值。

GRAPHQL_APP_ID=
GRAPHQL_APP_KEY=

环境名称

定义系统指向 测试生产 环境(UFVJM的官方系统)。

  • 测试环境
GRAPHQL_ENVNAME=teste
  • 生产环境
AINDA NÃO DISPONIBILIZADO

修改 .env 文件后,需要重新启动web容器以重新加载更改

API认证

认证由2个令牌控制

  • 应用程序令牌:在API门户注册并授权的应用程序。
  • 用户令牌:在UFVJM机构账户登录的用户。

Query para gerar os tokens

应用程序认证是通过在API门户注册应用程序时提供的appId和appKey来完成的。用户认证是通过提供UFVJM机构账户的用户名和密码来完成的。

执行认证查询时,将返回2个令牌

  • 一个有效的应用程序令牌,有效期为24小时
  • 和有效期为3小时的用户令牌。

此库将返回的令牌存储在PHP会话中,并在每次新请求中使用这些令牌。在每次请求之前,库将检查令牌的有效性,并在必要时通过更新请求进行更新。

Requisições com autenticação

令牌是JWT(JSON Web Token)类型,文章什么是JSON Web Token?解释了其工作原理。

集成认证

在文件开头

use GraphqlClient\GraphqlRequest\AuthGraphqlRequest;

在认证函数中

//recupera os dados do formulario
$containstitucional = 'nome.sobrenome';
$senha = 'sua-senha';

try {
    $request = new stdClass();

    if(is_null($containstitucional) or is_null($senha)){
        throw new \Exception('Usuário ou senha não informados');
    }

    $request->containstitucional = $containstitucional;
    $request->password = $senha;

    // Carrega a classe de autenticação
    $authGraphqlRequest = new AuthGraphqlRequest();

    // Tenta realizar o login na Conta Institucional
    $authGraphqlRequest->loginContaInstitucional($request);

    // Recupera as informações do usuário logado
    // Dados pessoais e vinculos (aluno, docente, tae, coordenador de curso, etc) com a UFVJM
    $userInfo = $authGraphqlRequest->usuarioLogadoInfo();

    // Neste ponto, a autenticação funcionou, implementar o carregamento do usuário de banco de dados
    // proprietário da conta institucuinal ($containstitucional) utilizada na autenticação, a senha já foi validada.
    // Realize o login do usuário no seu framework para que a sessão armazene o usuário logado.
} catch (\Exception $e) {
    $errorMessage = $e->getMessage();
    // A mensagem de erro foi carregada, tratar para disponibilizar na interface para o usuário do sistema
}

查询示例

在以下列出的示例中,认证已执行,用户和应用令牌已保存在会话中

按代码搜索

搜索代码为 COM001 的学科

// Carrega a classe de disciplina
$disciplinaGraphqlRequest = new DisciplinaGraphqlRequest();

// Recupera informações de disciplina por código
$disciplina = 
    $disciplinaGraphqlRequest->queryGetById('COM001')
    ->getResults();

分页信息搜索

搜索最多3个学科的列表

// Carrega a classe de disciplina
$disciplinaGraphqlRequest = new DisciplinaGraphqlRequest();

// Carrega a paginação solicitando até 3 registros
$pagination = new ForwardPaginationQuery(3);

// Recupera as informações de disciplinas
$disciplinas = 
    $disciplinaGraphqlRequest
    ->queryList($pagination)
    ->getResults();

加载关系

搜索代码为 COM001 的学科并加载 部门 关系

// Carrega a classe de disciplina
$disciplinaGraphqlRequest = new DisciplinaGraphqlRequest();

// Recupera informações de disciplina por código
$disciplina =
    $disciplinaGraphqlRequest
        ->addRelationDepartamento()
        ->queryGetById('COM001')
        ->getResults();

为库贡献

仓库

开发在 dev 分支上完成。维护者将批准的更改移至 master 分支。

工具

构建镜像,更新库并启动容器

make

执行验证

make tests

停止容器

make clean

测试

PHP Unit

make test

PHP 代码检查器

make lint-check

PHP 代码美化修复器

make lint-fix

PHP 杂乱检测器

make lint-md

PHP 安全检查器

make security-check

文档

更多信息: 开发者门户

责任团队

系统开发部 devsis@ufvjm.edu.br

合作伙伴

  • PROGRAD - 监控系统
  • PROEXC - 奖学金系统