static UserResponse fromEntity(User user) { return new AutoValue_UserResponse(user.getId(), user.getUsername()); } }
@Override @Transactional public Stream<RecoveryCode> generateRecoveryCodes() { String userId = getUser().getId(); deleteOldRecoveryCodes(userId); List<RecoveryCode> newRecoveryCodes = generateRecoveryCodes(userId); //noinspection RedundantCast runAsSystem((Runnable) () -> dataService.add(RECOVERY_CODE, newRecoveryCodes.stream())); return newRecoveryCodes.stream(); }
@Override public Stream<RecoveryCode> getRecoveryCodes() { String userId = getUser().getId(); return runAsSystem( () -> dataService.query(RECOVERY_CODE, RecoveryCode.class).eq(USER_ID, userId).findAll()); }
private UserSecret getSecret() { User user = getUser(); UserSecret secret = runAsSystem( () -> dataService .query(USER_SECRET, UserSecret.class) .eq(UserSecretMetaData.USER_ID, user.getId()) .findOne()); if (secret != null) { return secret; } else { throw new InternalAuthenticationServiceException( format( "Secret not found, user: [{0}] is not configured for two factor authentication", user.getUsername())); } }
@Override public void resetSecretForUser() { User user = getUser(); Stream<UserSecret> userSecrets = runAsSystem( () -> dataService .query(USER_SECRET, UserSecret.class) .eq(USER_ID, user.getId()) .findAll()); //noinspection RedundantCast runAsSystem((Runnable) () -> dataService.delete(USER_SECRET, userSecrets)); }
@Override public void saveSecretForUser(String secret) { if (secret == null) { throw new InternalAuthenticationServiceException("No secretKey found"); } else { User user = getUser(); UserSecret userSecret = userSecretFactory.create(); userSecret.setUserId(user.getId()); userSecret.setSecret(secret); runAsSystem(() -> dataService.add(USER_SECRET, userSecret)); } }
UserViewData(User mu) { this(mu.getId(), mu.getUsername()); firstName = (null == mu.getFirstName() ? "" : mu.getFirstName()); middleName = (null == mu.getMiddleNames() ? "" : mu.getMiddleNames()); lastName = (null == mu.getLastName() ? "" : mu.getLastName()); fullName = firstName + ' ' + middleName + ' ' + lastName; this.active = mu.isActive(); this.superuser = mu.isSuperuser(); }
@Override @Transactional public void useRecoveryCode(String recoveryCode) { String userId = getUser().getId(); RecoveryCode existingCode = runAsSystem( () -> dataService .query(RECOVERY_CODE, RecoveryCode.class) .eq(USER_ID, userId) .and() .eq(CODE, recoveryCode) .findOne()); if (existingCode != null) { runAsSystem(() -> dataService.delete(RECOVERY_CODE, existingCode)); UserSecret secret = runAsSystem( () -> dataService .query(USER_SECRET, UserSecret.class) .eq(UserSecretMetaData.USER_ID, userId) .findOne()); secret.setFailedLoginAttempts(0); runAsSystem(() -> dataService.update(USER_SECRET, secret)); } else { throw new BadCredentialsException("Invalid recovery code or code already used"); } }