Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@

Plataforma Digital para a Reserva de Salas e Respetivos Materiais. PAP (Prova de Aptidão Profissional) - Marco Pisco - Curso de Técnico de Informática - Sistemas 12ºAno

## Instalação (o básico)
## Dependências

- Necessário um servidor com PHP e uma DB MariaDB
- PHP 8.4 (versão recomendada/testada; usar versão compatível com as dependências do Composer)
- Servidor Web (recomendo o Caddy)
- MariaDB ou MySQL (oficialmente recomendo o MariaDB) — é necessário criar o utilizador e a base de dados antes de instalar (consultar o Manual do Técnico para instruções detalhadas)
- Composer (para o Windows, descarregar [esta versão](https://getcomposer.org/Composer-Setup.exe))
- Com o composer, fazer `composer install` através de um terminal, para instalar as dependências.
- Montar o utilizador usando as instruções [na wiki](https://github.com/marpisco/ClassLink/wiki/Configura%C3%A7%C3%A3o-MYSQL) (brevemente haverá mais documentação na Wiki)

Informações específicas (e mais bem explicadas) estarão no Manual do Técnico.
Comment on lines +12 to 20
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ao renomear a secção de instalação para "Dependências" foi removido o passo que apontava para as instruções de criação/configuração do utilizador MySQL/MariaDB. Se essa configuração continua necessária (criação do user/permissões), o README fica incompleto para uma instalação nova; sugiro reintroduzir um link/passo equivalente (Wiki/Manual do Técnico) nesta secção.

Copilot uses AI. Check for mistakes.

Expand Down
54 changes: 30 additions & 24 deletions src/config.sample.php
Original file line number Diff line number Diff line change
@@ -1,42 +1,48 @@
<?php
require_once(__DIR__ . '/../vendor/autoload.php');
use League\OAuth2\Client\Provider\GenericProvider;
/* Ficheiro de configuração
Mais informação sobre o ficheiro de configuração está na documentação.
*/

// Email configuration
// Configuração da Base de Dados
$db = array(
'tipo' => 'mysql', // Apenas há suporte a MYSQL (mysql = mariadb) por enquanto
'servidor' => 'localhost',
'user' => 'reservasalas',
// Defina uma password forte antes de usar em produção e restrinja as permissões deste utilizador da DB ao mínimo necessário.
'password' => '',
'db' => 'reservasalas',
Comment on lines +11 to +15
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

O config.sample.php ainda inclui uma password de base de dados hardcoded ('salaspass'). Mesmo sendo um ficheiro de exemplo, isto aumenta o risco de alguém usar credenciais fracas/iguais em produção e também expõe um valor que pode acabar reutilizado. Sugestão: deixar o valor vazio (ou placeholder) e reforçar no comentário que deve ser definido externamente e com permissões mínimas.

Copilot uses AI. Check for mistakes.
'porta' => 3306
);

// Configuração do servidor de email
$mail = array(
'ativado' => true,
'servidor' => 'smtp.gmail.com',
'porta' => 465,
'autenticacao' => true,
// caso a autenticação seja por starttls, usar PHPMailer::ENCRYPTION_STARTTLS
// caso a autenticação seja por ssl, usar PHPMailer::ENCRYPTION_SMTPS
// caso não seja necessário autenticação, por false na opção autenticacao, e não importar-se para os outros
'tipodeseguranca' => 'PHPMailer::ENCRYPTION_STARTTLS ou PHPMailer::ENCRYPTION_SMTPS',
// Tipo de Segurança:
// - Para STARTTLS (normalmente porta 587), usar \PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS
// - Para SMTPS/SSL (normalmente porta 465), usar \PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_SMTPS
// - Se não for necessária autenticação, definir 'autenticacao' => false e ajustar esta opção conforme necessário
'tipodeseguranca' => \PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_SMTPS,
'username' => '',
'fromname' => 'Reserva de Salas',
'mailfrom' => '',
'password' => ''
);

// Database configuration (MySQL/MariaDB)
// SECURITY: Use strong passwords and restrict database user permissions
$db = array(
'tipo' => 'mysql',
'servidor' => 'localhost',
'user' => 'reservasalas',
'password' => 'salaspass', // CHANGE THIS to a strong password
'db' => 'reservasalas',
'porta' => 3306
);

// OAuth 2.0 configuration
// SECURITY: Keep clientId and clientSecret confidential
// Configuração do Fornecedor de Autenticação (OAuth 2.0)
// IMPORTANTE: Manter o clientSecret confidencial e nunca o expor publicamente.
// O redirectUri deve ser um URL estático/configurado explicitamente — não use $_SERVER['HTTP_HOST']
// diretamente pois pode ser manipulado (Host Header Injection).
$provider = new GenericProvider([
'urlAuthorize' => 'https://authentik.devenv.marcopisco.com/application/o/authorize/',
'urlAccessToken' => 'https://authentik.devenv.marcopisco.com/application/o/token/',
'urlResourceOwnerDetails' => 'https://authentik.devenv.marcopisco.com/application/o/userinfo/',
'clientId' => 'clientid', // CHANGE THIS
'clientSecret' => 'clientsecret', // CHANGE THIS and keep it secret
'redirectUri' => 'https://' . $_SERVER['HTTP_HOST'] . '/login'
'urlAuthorize' => 'https://exemplo.dominio.pt/application/o/authorize/',
'urlAccessToken' => 'https://exemplo.dominio.pt/application/o/token/',
'urlResourceOwnerDetails' => 'https://exemplo.dominio.pt/application/o/userinfo/',
'clientId' => '',
'clientSecret' => '',
'redirectUri' => 'https://exemplo.dominio.pt/login'
]);
?>
Loading