| Line 13... |
Line 13... |
| 13 |
import com.spice.profitmandi.dao.entity.user.Device;
|
13 |
import com.spice.profitmandi.dao.entity.user.Device;
|
| 14 |
import com.spice.profitmandi.dao.enumuration.dtr.AccountType;
|
14 |
import com.spice.profitmandi.dao.enumuration.dtr.AccountType;
|
| 15 |
import com.spice.profitmandi.dao.enumuration.dtr.RoleType;
|
15 |
import com.spice.profitmandi.dao.enumuration.dtr.RoleType;
|
| 16 |
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
|
16 |
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
|
| 17 |
import com.spice.profitmandi.dao.repository.catalog.DeviceRepository;
|
17 |
import com.spice.profitmandi.dao.repository.catalog.DeviceRepository;
|
| - |
|
18 |
import com.spice.profitmandi.dao.repository.cs.DemoPartnerAccessService;
|
| 18 |
import com.spice.profitmandi.dao.repository.dtr.*;
|
19 |
import com.spice.profitmandi.dao.repository.dtr.*;
|
| 19 |
import com.spice.profitmandi.service.AuthService;
|
20 |
import com.spice.profitmandi.service.AuthService;
|
| 20 |
import com.spice.profitmandi.service.authentication.RoleManager;
|
21 |
import com.spice.profitmandi.service.authentication.RoleManager;
|
| 21 |
import com.spice.profitmandi.service.user.RetailerService;
|
22 |
import com.spice.profitmandi.service.user.RetailerService;
|
| 22 |
import com.spice.profitmandi.service.user.UserService;
|
23 |
import com.spice.profitmandi.service.user.UserService;
|
| Line 113... |
Line 114... |
| 113 |
private UserService userService;
|
114 |
private UserService userService;
|
| 114 |
|
115 |
|
| 115 |
@Autowired
|
116 |
@Autowired
|
| 116 |
private AuthRepository authRepository;
|
117 |
private AuthRepository authRepository;
|
| 117 |
|
118 |
|
| - |
|
119 |
@Autowired
|
| - |
|
120 |
private DemoPartnerAccessService demoPartnerAccessService;
|
| - |
|
121 |
|
| 118 |
@RequestMapping(value = "/login", method = RequestMethod.GET)
|
122 |
@RequestMapping(value = "/login", method = RequestMethod.GET)
|
| 119 |
public String loginPage(HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
|
123 |
public String loginPage(HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
|
| 120 |
LOGGER.info("Context Path is {}", request.getContextPath());
|
124 |
LOGGER.info("Context Path is {}", request.getContextPath());
|
| 121 |
try {
|
125 |
try {
|
| 122 |
LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
|
126 |
LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
|
| Line 160... |
Line 164... |
| 160 |
if (roleManager.isAdmin(fofoDetails.getRoleIds())) {
|
164 |
if (roleManager.isAdmin(fofoDetails.getRoleIds())) {
|
| 161 |
if (StringUtils.isEmpty(emailId)) {
|
165 |
if (StringUtils.isEmpty(emailId)) {
|
| 162 |
AuthUser authUser = authRepository.selectByEmailOrMobile(fofoDetails.getEmailId());
|
166 |
AuthUser authUser = authRepository.selectByEmailOrMobile(fofoDetails.getEmailId());
|
| 163 |
model.addAttribute("authToken", getToken(authUser.getGmailId()));
|
167 |
model.addAttribute("authToken", getToken(authUser.getGmailId()));
|
| 164 |
} else {
|
168 |
} else {
|
| - |
|
169 |
validateSalesPartnerAccess(fofoDetails.getEmailId(), emailId);
|
| 165 |
model.addAttribute("authToken", getToken(emailId));
|
170 |
model.addAttribute("authToken", getToken(emailId));
|
| 166 |
model.addAttribute("androidId", getAndroidId(emailId));
|
171 |
model.addAttribute("androidId", getAndroidId(emailId));
|
| 167 |
}
|
172 |
}
|
| 168 |
} else {
|
173 |
} else {
|
| 169 |
emailId = fofoDetails.getEmailId();
|
174 |
emailId = fofoDetails.getEmailId();
|
| Line 177... |
Line 182... |
| 177 |
model.addAttribute("appUrl", appUrl);
|
182 |
model.addAttribute("appUrl", appUrl);
|
| 178 |
}
|
183 |
}
|
| 179 |
return "mobileapp";
|
184 |
return "mobileapp";
|
| 180 |
}
|
185 |
}
|
| 181 |
|
186 |
|
| - |
|
187 |
// Sales position holders may only take a partner's app token for their position or demo partners.
|
| - |
|
188 |
private void validateSalesPartnerAccess(String callerEmail, String partnerEmail) throws Exception {
|
| - |
|
189 |
AuthUser authUser = authRepository.selectByEmailOrMobile(callerEmail);
|
| - |
|
190 |
if (authUser == null || !demoPartnerAccessService.isSalesUser(authUser.getId())) {
|
| - |
|
191 |
return;
|
| - |
|
192 |
}
|
| - |
|
193 |
User partnerUser = userRepository.selectByEmailId(partnerEmail);
|
| - |
|
194 |
int fofoId = userAccountRepository.selectRetailerIdByUserId(partnerUser.getId());
|
| - |
|
195 |
if (!demoPartnerAccessService.isAllowed(authUser.getId(), fofoId)) {
|
| - |
|
196 |
throw new ProfitMandiBusinessException("emailId", partnerEmail, "Partner is not mapped to you by position or demo access");
|
| - |
|
197 |
}
|
| - |
|
198 |
}
|
| - |
|
199 |
|
| 182 |
private String getAndroidId(String emailId) throws Exception {
|
200 |
private String getAndroidId(String emailId) throws Exception {
|
| 183 |
User user = userRepository.selectByEmailId(emailId);
|
201 |
User user = userRepository.selectByEmailId(emailId);
|
| 184 |
List<Device> devices = deviceRepository.selectByUserIdAndModifiedTimestamp(Arrays.asList(user.getId()),
|
202 |
List<Device> devices = deviceRepository.selectByUserIdAndModifiedTimestamp(Arrays.asList(user.getId()),
|
| 185 |
LocalDateTime.now().minusYears(2), LocalDateTime.now());
|
203 |
LocalDateTime.now().minusYears(2), LocalDateTime.now());
|
| 186 |
if (devices.size() > 0) {
|
204 |
if (devices.size() > 0) {
|
| Line 233... |
Line 251... |
| 233 |
@RequestMapping(value = "/login-as-partner-readonly", method = RequestMethod.GET)
|
251 |
@RequestMapping(value = "/login-as-partner-readonly", method = RequestMethod.GET)
|
| 234 |
public String readonlyLogin(HttpServletRequest request, Model model, HttpServletResponse response,
|
252 |
public String readonlyLogin(HttpServletRequest request, Model model, HttpServletResponse response,
|
| 235 |
@RequestParam int fofoId) throws Exception {
|
253 |
@RequestParam int fofoId) throws Exception {
|
| 236 |
LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
|
254 |
LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
|
| 237 |
if (roleManager.isAdmin(fofoDetails.getRoleIds())) {
|
255 |
if (roleManager.isAdmin(fofoDetails.getRoleIds())) {
|
| - |
|
256 |
AuthUser authUser = authRepository.selectByEmailOrMobile(fofoDetails.getEmailId());
|
| - |
|
257 |
if (authUser == null || !demoPartnerAccessService.isAllowed(authUser.getId(), fofoId)) {
|
| - |
|
258 |
throw new ProfitMandiBusinessException("fofoId", fofoId, "Partner is not mapped to you by position or demo access");
|
| - |
|
259 |
}
|
| 238 |
int userId = userAccountRepository.selectUserIdByRetailerId(fofoId);
|
260 |
int userId = userAccountRepository.selectUserIdByRetailerId(fofoId);
|
| 239 |
User user = userRepository.selectById(userId);
|
261 |
User user = userRepository.selectById(userId);
|
| 240 |
Set<Integer> roleIds = userRoleRepository.selectByUserId(userId).stream().map(x -> x.getRoleId())
|
262 |
Set<Integer> roleIds = userRoleRepository.selectByUserId(userId).stream().map(x -> x.getRoleId())
|
| 241 |
.collect(Collectors.toSet());
|
263 |
.collect(Collectors.toSet());
|
| 242 |
LoginDetails newFofoDetails = new LoginDetails();
|
264 |
LoginDetails newFofoDetails = new LoginDetails();
|