You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.5 KiB

package de.fd.fh.server.access;
import de.fd.fh.server.user.UserId;
import dev.morphia.annotations.Embedded;
import dev.morphia.annotations.PrePersist;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.Random;
@Embedded
@NoArgsConstructor
@AllArgsConstructor
@Getter
public class AccessToken
{
private String token;
private LocalDateTime createdDate;
private Role role;
@Embedded
private UserId userId;
static AccessToken of(final Access access)
{
return new AccessToken(
generateToken(),
LocalDateTime.now(),
access.getRole(),
access.getUserId()
);
}
@PrePersist
void prePersist()
{
this.createdDate = LocalDateTime.now();
}
private static String generateToken()
{
final String upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
final String lower = upper.toLowerCase();
final String numbers = "0123456789";
final String alphabet = upper + lower + numbers;
System.out.println("generate Security Token.");
Random random = new Random();
StringBuilder generatedString = new StringBuilder();
for (int i = 0; i < 64; i++) {
generatedString.append(alphabet.charAt(random.nextInt(alphabet.length())));
}
System.out.println("Token: " + generatedString);
return generatedString.toString();
}
}