Αναφορά: Auth (πυρήνας)¶
Διαδρομή: app/Core/Auth.php
Ρόλος¶
Διαχείριση session, ταυτότητας χρήστη (id, email), εταιρείας (companyId), ρόλων/δικαιωμάτων, έναρξη session (startSession).
Δημόσιο API (ενδεικτικό)¶
Μέθοδοι όπως: check, id, companyId, hasRole, hasPermission, αποσύνδεση, κ.λπ.
API token (X-CARPET-TOKEN)¶
Για αιτήματα με URI που περιέχει /api, αν δεν υπάρχει συνδεδεμένος χρήστης στη συνεδρία, το middleware auth καλεί tryBootstrapFromCarpetToken(): διαβάζει την κεφαλίδα X-CARPET-TOKEN (εναλλακτικά REDIRECT_HTTP_X_CARPET_TOKEN ή ισοδύναμο από getallheaders).
- Κλειδί εταιρείας: αν ταιριάζει
companies.api_token, γίνεταιlogin()ως πρωτεύων χρήστης της εταιρείας (CompanyModel::findActiveByApiToken,CompanyUserModel::getPrimaryUserForCompany). - Κλειδί χρήστη: αλλιώς αν ταιριάζει
useraccounts.api_token, γίνεταιlogin()για αυτόν τον χρήστη με την πρώτη ενεργή εταιρεία του (AccountModel::findActiveByApiToken,CompanyUserModel::getFirstCompany). Ίδια συμπεριφορά με κανονική σύνδεση (ρόλοι/δικαιώματα του χρήστη).
Τα tokens ορίζονται στο CompanyModel::create και AccountModel::create· migrations 20260416130000_companies_api_token.php και 20260416140000_useraccounts_api_token.php για υπάρχοντα δεδομένα.
Απόκτηση api_token χρήστη με κωδικό (API)¶
POST /api/auth/token— σώμα φόρμας:emailήusername(το email του λογαριασμού) καιpassword. Σε επιτυχία, τοdataπεριέχειapi_token(hex 64) καιheader: X-CARPET-TOKEN. Ισχύουν οι ίδιοι περιορισμοί με τη σύνδεση (εταιρεία, rate limit). Αν ο λογαριασμός έχει 2FA, η απάντηση περιλαμβάνειrequire_2fa: true· τότεPOST /api/auth/token/verify-2faμεotp(ίδια συνεδρία cookie) επιστρέφει το token. Για παλιούς χρήστες χωρίςapi_token, δημιουργείται αυτόματα (AccountModel::ensureApiToken).
Σημειώσεις προς συμπλήρωση¶
- [ ] Δομή δεδομένων στη
$_SESSION - [ ] Λήξη session / timeout από
.env - [ ] Σχέση με
AccountModel/CompanyUserModel