001// -------------------------------------------------------------------------------- 002// Copyright 2002-2026 Echo Three, LLC 003// 004// Licensed under the Apache License, Version 2.0 (the "License"); 005// you may not use this file except in compliance with the License. 006// You may obtain a copy of the License at 007// 008// http://www.apache.org/licenses/LICENSE-2.0 009// 010// Unless required by applicable law or agreed to in writing, software 011// distributed under the License is distributed on an "AS IS" BASIS, 012// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013// See the License for the specific language governing permissions and 014// limitations under the License. 015// -------------------------------------------------------------------------------- 016 017package com.echothree.model.control.user.server.transfer; 018 019import javax.inject.Inject; 020import com.echothree.model.control.party.server.control.PartyControl; 021import com.echothree.model.control.user.common.UserOptions; 022import com.echothree.model.control.user.common.transfer.UserLoginPasswordTransfer; 023import com.echothree.model.control.user.common.transfer.UserLoginTransfer; 024import com.echothree.model.data.user.server.entity.UserLogin; 025import com.echothree.model.data.user.server.entity.UserVisit; 026import com.echothree.util.common.transfer.MapWrapper; 027import javax.enterprise.context.RequestScoped; 028 029@RequestScoped 030public class UserLoginTransferCache 031 extends BaseUserTransferCache<UserLogin, UserLoginTransfer> { 032 033 @Inject 034 PartyControl partyControl; 035 036 boolean includeUserLoginPasswords; 037 038 /** Creates a new instance of UserLoginTransferCache */ 039 protected UserLoginTransferCache() { 040 super(); 041 042 var options = session.getOptions(); 043 if(options != null) { 044 includeUserLoginPasswords = options.contains(UserOptions.UserLoginIncludeUserLoginPasswords); 045 } 046 } 047 048 public UserLoginTransfer getUserLoginTransfer(UserVisit userVisit, UserLogin userLogin) { 049 var userLoginTransfer = get(userLogin); 050 051 if(userLoginTransfer == null) { 052 var party = userLogin.getParty(); 053 var partyTransfer = partyControl.getPartyTransfer(userVisit, party); 054 var userLoginStatus = userControl.getUserLoginStatus(party); 055 var username = userLogin.getUsername(); 056 var unformattedLastLoginTime = userLoginStatus.getLastLoginTime(); 057 var lastLoginTime = formatTypicalDateTime(userVisit, unformattedLastLoginTime); 058 var failureCount = userLoginStatus.getFailureCount(); 059 var unformattedFirstFailureTime = userLoginStatus.getFirstFailureTime(); 060 var firstFailureTime = formatTypicalDateTime(userVisit, unformattedFirstFailureTime); 061 var unformattedLastFailureTime = userLoginStatus.getLastFailureTime(); 062 var lastFailureTime = formatTypicalDateTime(userVisit, unformattedLastFailureTime); 063 var expiredCount = userLoginStatus.getExpiredCount(); 064 var forceChange = userLoginStatus.getForceChange(); 065 066 userLoginTransfer = new UserLoginTransfer(partyTransfer, username, unformattedLastLoginTime, lastLoginTime, failureCount, 067 unformattedFirstFailureTime, firstFailureTime, unformattedLastFailureTime, lastFailureTime, expiredCount, forceChange); 068 put(userVisit, userLogin, userLoginTransfer); 069 070 if(includeUserLoginPasswords) { 071 var userLoginPasswordTransfers = userControl.getUserLoginPasswordTransfersByParty(userVisit, userLogin.getParty()); 072 var userLoginPasswords = new MapWrapper<UserLoginPasswordTransfer>(userLoginPasswordTransfers.size()); 073 074 userLoginPasswordTransfers.forEach((userLoginPasswordTransfer) -> { 075 userLoginPasswords.put(userLoginPasswordTransfer.getUserLoginPasswordType().getUserLoginPasswordTypeName(), userLoginPasswordTransfer); 076 }); 077 078 userLoginTransfer.setUserLoginPasswords(userLoginPasswords); 079 } 080 } 081 082 return userLoginTransfer; 083 } 084 085}