package de.tavolio.session; import de.tavolio.account.AccountEntity; import de.tavolio.account.AccountRepo; import de.tavolio.session.dto.SessionCreation; import io.quarkus.elytron.security.common.BcryptUtil; import io.smallrye.jwt.build.Jwt; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.ws.rs.NotFoundException; import java.time.ZonedDateTime; import java.util.Optional; @ApplicationScoped public class SessionService { @Inject AccountRepo accountRepo; public String generateBySessionCreation(SessionCreation sessionCreation) { Optional accountEntityOptional = accountRepo.findOptionalByEmail(sessionCreation.email()); if (accountEntityOptional.isPresent()) { AccountEntity accountEntity = accountEntityOptional.get(); if (BcryptUtil.matches(sessionCreation.password(), accountEntity.getPassword())) { return generateToken(accountEntity.getId()); } } throw new NotFoundException(); } private String generateToken(String upn) { return Jwt.upn(upn).expiresAt(ZonedDateTime.now().plusYears(1).toInstant()).issuer("https://tavolio.de").sign(); } }