backend/src/main/java/de/tavolio/session/SessionService.java

40 lines
1.2 KiB
Java

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<AccountEntity> 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();
}
}