Skip to content
Closed
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
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 README fixa a dependência em “PHP 8.4”, mas o projeto não declara a versão mínima no composer.json (não há "php": ... em require). Para evitar documentação potencialmente divergente, sugiro alinhar: ou indicar uma faixa/versão mínima suportada no README (ex.: >=8.x), ou adicionar a constraint correspondente no composer.json.

Suggested change
- PHP 8.4
- PHP 8.4 ou superior

Copilot uses AI. Check for mistakes.
- Servidor Web (recomendo o Caddy)
- MariaDB ou MySQL (oficialmente recomendo o MariaDB)
- 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.

Expand Down
40 changes: 21 additions & 19 deletions src/config.sample.php
Original file line number Diff line number Diff line change
@@ -1,42 +1,44 @@
<?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',
'password' => 'salaspass',
Comment on lines +9 to +13
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 ficheiro config.sample.php inclui uma password de DB concreta ('salaspass'). Mesmo sendo sample, isto incentiva a manter credenciais fracas/default; sugeria deixar vazio/placeholder e voltar a incluir uma nota explícita para usar password forte e permissões mínimas no utilizador da BD.

Suggested change
$db = array(
'tipo' => 'mysql', // Apenas há suporte a MYSQL (mysql = mariadb) por enquanto
'servidor' => 'localhost',
'user' => 'reservasalas',
'password' => 'salaspass',
// Defina uma password forte e única no ficheiro real de configuração
// e use um utilizador da BD com apenas as permissões mínimas necessárias.
$db = array(
'tipo' => 'mysql', // Apenas há suporte a MYSQL (mysql = mariadb) por enquanto
'servidor' => 'localhost',
'user' => 'reservasalas',
'password' => '',

Copilot uses AI. Check for mistakes.
'db' => 'reservasalas',
'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
// Tipo de Segurança: Explicação:
/// 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
Comment on lines +25 to +27
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.

Os comentários com /// (linhas 25-27) não são um padrão usado no resto do projeto (normalmente é // ou /** ... */, p.ex. func/email_helper.php:49+). Sugiro uniformizar para // para evitar confusão com PHPDoc e manter consistência.

Suggested change
/// 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
// 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

Copilot uses AI. Check for mistakes.
'tipodeseguranca' => 'PHPMailer::ENCRYPTION_STARTTLS ou PHPMailer::ENCRYPTION_SMTPS',
Comment on lines +24 to 28
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 valor de tipodeseguranca está como string descritiva ("PHPMailer::ENCRYPTION_STARTTLS ou PHPMailer::ENCRYPTION_SMTPS"), mas este campo é usado diretamente em $mailer->SMTPSecure (ex.: func/email_helper.php:144) e precisa de um valor efetivo (p.ex. PHPMailer::ENCRYPTION_STARTTLS / PHPMailer::ENCRYPTION_SMTPS ou 'tls'/'ssl'). Do jeito que está, quem copiar o sample pode ficar com envio de email a falhar.

Suggested change
// Tipo de Segurança: Explicação:
/// 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:
/// usar 'tls' com a porta 587 (STARTTLS)
/// usar 'ssl' com a porta 465 (SMTPS)
/// caso não seja necessário autenticação, pôr false na opção autenticacao
'tipodeseguranca' => 'ssl',

Copilot uses AI. Check for mistakes.
'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)
$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
'clientId' => 'clientid',
'clientSecret' => 'clientsecret',
Comment on lines 39 to +41
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.

Foram removidas as notas que indicavam para alterar e manter secreto clientId/clientSecret. Como este ficheiro é tipicamente copiado para src/config.php, é fácil alguém fazer deploy com credenciais default; reintroduzir uma indicação explícita (e/ou placeholders mais óbvios) ajuda a prevenir configurações inseguras.

Copilot uses AI. Check for mistakes.
'redirectUri' => 'https://' . $_SERVER['HTTP_HOST'] . '/login'
]);
?>
Loading