package org.apereo.cas.otp.repository.credentials; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * This is {@link BaseInMemoryOneTimeTokenCredentialRepository}. * * @author Misagh Moayyed * @since 5.0.0 */ public abstract class BaseInMemoryOneTimeTokenCredentialRepository extends BaseOneTimeTokenCredentialRepository { private Map<String, OneTimeTokenAccount> accounts; /** * Instantiates a new In memory google authenticator account registry. */ public BaseInMemoryOneTimeTokenCredentialRepository() { this.accounts = new ConcurrentHashMap<>(); } @Override public String getSecret(final String userName) { if (contains(userName)) { return this.accounts.get(userName).getSecretKey(); } return null; } @Override public void save(final String userName, final String secretKey, final int validationCode, final List<Integer> scratchCodes) { final OneTimeTokenAccount account = new OneTimeTokenAccount(userName, secretKey, validationCode, scratchCodes); this.accounts.put(userName, account); } private boolean contains(final String username) { return this.accounts.containsKey(username); } /** * Remove. * * @param username the username */ public void remove(final String username) { this.accounts.remove(username); } }