Subversion Repositories SmartDukaan

Rev

Rev 37728 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 37728 Rev 37780
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();