AdonisJS Ally driver dla Solvro Auth
Oficjalny pakiet do integracji Solvro Auth z aplikacjami AdonisJS. Umożliwia łatwą autentykację użytkowników przez scentralizowany system uwierzytelniania Koła Naukowego Solvro.
npm install @solvro/authnode ace configure @solvro/authPodczas konfiguracji zostaniesz poproszony o podanie CLIENT_ID i CLIENT_SECRET.
Aby je otrzymać, zapytaj na kanale #main i zpinguj @Bartosz Gotowski 😍.
Pakiet automatycznie skonfiguruje:
- ✅ Kontroler uwierzytelniania (
AuthController) - ✅ Trasy logowania/wylogowania
- ✅ Zmienne środowiskowe
- ✅ Konfigurację Ally driver
Po konfiguracji możesz używać Solvro Auth w swojej aplikacji:
// Przekierowanie do logowania
Route.get("/login", ({ ally }) => {
return ally.use("solvroAuth").redirect();
});
// Callback po logowaniu
Route.get("/callback", async ({ ally, auth, response }) => {
const solvroUser = await ally.use("solvroAuth").user();
// Stwórz lub znajdź użytkownika w bazie danych
const user = await User.firstOrCreate(
{ email: solvroUser.email },
{
email: solvroUser.email,
name: solvroUser.name,
solvroId: solvroUser.id,
},
);
await auth.use("web").login(user);
return response.redirect("/dashboard");
});
// Wylogowanie
Route.post("/logout", async ({ auth, response }) => {
await auth.use("web").logout();
return response.redirect("/");
});Pakiet zwraca obiekt użytkownika z następującymi polami:
{
id: string; // UUID użytkownika w Keycloak
email: string; // Adres email
name: string; // Pełne imię i nazwisko
emailVerified: boolean;
original: {
// Surowe dane z Keycloak
sub: string;
email: string;
preferred_username: string;
given_name: string;
family_name: string;
// ... inne pola z Keycloak
}
}Po konfiguracji w pliku .env znajdziesz:
APP_DOMAIN=http://localhost:3333
SOLVRO_AUTH_CLIENT_ID=your-client-id
SOLVRO_AUTH_CLIENT_SECRET=your-client-secretPakiet automatycznie aktualizuje następujące pliki:
import { SolvroAuthService } from "@solvro/auth";
import { defineConfig } from "@adonisjs/ally";
export default defineConfig({
solvroAuth: SolvroAuthService({
clientId: env.get("SOLVRO_AUTH_CLIENT_ID"),
clientSecret: env.get("SOLVRO_AUTH_CLIENT_SECRET"),
callbackUrl: "",
}),
});router.get("/auth/login", [AuthController, "login"]).use(middleware.guest());
router
.get("/auth/callback", [AuthController, "callback"])
.use(middleware.guest());
router.post("/auth/logout", [AuthController, "logout"]).use(middleware.auth());export default class AuthController {
async login({ ally }: HttpContext) {
return ally.use("solvroAuth").redirect();
}
async callback({ ally, auth, response }: HttpContext) {
const solvroUser = await ally.use("solvroAuth").user();
// Logika tworzenia/logowania użytkownika
}
async logout({ auth, response }: HttpContext) {
await auth.use("web").logout();
return response.redirect("/");
}
}src/
├── driver.ts # Implementacja Ally driver
└── user_schema.ts # Schema użytkownika
Driver implementuje standardowy interfejs AdonisJS Ally z następującymi właściwościami:
authorizeUrl: URL autoryzacji KeycloakaccessTokenUrl: URL wymiany kodu na tokenuserInfoUrl: URL pobierania informacji o użytkownikucodeParamName: 'code'errorParamName: 'error'stateCookieName: 'solvro_oauth_state'stateParamName: 'state'scopeParamName: 'scope'scopesSeparator: ' '
-
Zbuduj pakiet:
npm run build
-
W swojej aplikacji AdonisJS zainstaluj pakiet lokalnie:
npm install path/to/solvro-auth/package
-
Skonfiguruj pakiet:
node ace configure @solvro/auth
W folderze examples/adonisjs znajdziesz przykład pełnej aplikacji AdonisJS z skonfigurowanym Solvro Auth.
W razie problemów:
- Sprawdź dokumentację w głównym README
- Zapytaj na kanale #main i zpinguj @Bartosz Gotowski 😍
MIT License
Stworzony z ❤️ przez Koło Naukowe Solvro