ufvjm / graphql-client
用于向UFVJM的GraphQL API发送请求的GraphQL客户端。
0.0.20
2024-08-21 19:26 UTC
Requires
- php: ^7.1
- firebase/php-jwt: ^5.0
- gmostafa/php-graphql-client: ^1.13
Requires (Dev)
- phpmd/phpmd: @stable
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.0
README
Client GraphQL - UFVJM
一个用于向UFVJM的GraphQL服务器发送请求的PHP库。
摘要
使用此库
预置要求
- PHP 7.1或更高版本
- 已安装并配置Composer
- 在UFVJM开发者门户上注册的应用程序
将库作为依赖项添加
在项目根目录下,执行 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_ID 和 GRAPHQL_APP_KEY 的值替换为在DTI/DDS微服务堆栈中注册的值。
GRAPHQL_APP_ID= GRAPHQL_APP_KEY=
环境名称
定义系统指向 测试
或 生产
环境(UFVJM的官方系统)。
- 测试环境
GRAPHQL_ENVNAME=teste
- 生产环境
AINDA NÃO DISPONIBILIZADO
修改 .env 文件后,需要重新启动web容器以重新加载更改
API认证
认证由2个令牌控制
- 应用程序令牌:在API门户注册并授权的应用程序。
- 用户令牌:在UFVJM机构账户登录的用户。
应用程序认证是通过在API门户注册应用程序时提供的appId和appKey来完成的。用户认证是通过提供UFVJM机构账户的用户名和密码来完成的。
执行认证查询时,将返回2个令牌
- 一个有效的应用程序令牌,有效期为24小时
- 和有效期为3小时的用户令牌。
此库将返回的令牌存储在PHP会话中,并在每次新请求中使用这些令牌。在每次请求之前,库将检查令牌的有效性,并在必要时通过更新请求进行更新。
令牌是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 - 奖学金系统