use of com.salesmanager.shop.model.security.ReadableGroup in project shopizer by shopizer-ecommerce.
the class UserFacadeImpl method authorizeStore.
@Override
public boolean authorizeStore(MerchantStore store, String path) {
Validate.notNull(store, "MerchantStore cannot be null");
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (!StringUtils.isBlank(path) && path.contains(PRIVATE_PATH)) {
Validate.notNull(authentication, "Don't call ths method if a user is not authenticated");
try {
String currentPrincipalName = authentication.getName();
LOGGER.info("Principal " + currentPrincipalName);
ReadableUser readableUser = findByUserName(currentPrincipalName, languageService.defaultLanguage());
// ReadableUser readableUser = findByUserName(currentPrincipalName, store.getCode(), store.getDefaultLanguage());
if (readableUser == null) {
return false;
}
// current user match;
String merchant = readableUser.getMerchant();
// user store is store request param
if (store.getCode().equalsIgnoreCase(merchant)) {
return true;
}
// is superadmin
for (ReadableGroup group : readableUser.getGroups()) {
if (Constants.GROUP_SUPERADMIN.equals(group.getName())) {
return true;
}
}
boolean authorized = false;
// user store can be parent and requested store is child
// get parent
// TODO CACHE
MerchantStore parent = null;
if (store.getParent() != null) {
parent = merchantStoreService.getParent(merchant);
}
// user can be in parent
if (parent != null && parent.getCode().equals(store.getCode())) {
authorized = true;
}
// else false
return authorized;
} catch (Exception e) {
throw new UnauthorizedException("Cannot authorize user " + authentication.getPrincipal().toString() + " for store " + store.getCode(), e.getMessage());
}
}
return true;
}
use of com.salesmanager.shop.model.security.ReadableGroup in project shopizer by shopizer-ecommerce.
the class UserFacadeImpl method authorizedStore.
@Override
public boolean authorizedStore(String userName, String merchantStoreCode) {
try {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Set<String> roles = authentication.getAuthorities().stream().map(r -> r.getAuthority()).collect(Collectors.toSet());
ReadableUser readableUser = findByUserName(userName, languageService.defaultLanguage());
// unless superadmin
for (ReadableGroup group : readableUser.getGroups()) {
if (Constants.GROUP_SUPERADMIN.equals(group.getName())) {
return true;
}
}
boolean authorized = false;
User user = userService.findByStore(readableUser.getId(), merchantStoreCode);
if (user != null) {
authorized = true;
} else {
user = userService.getByUserName(userName);
}
if (user != null && !authorized) {
// get parent
MerchantStore store = merchantStoreService.getParent(merchantStoreCode);
// user can be in parent
MerchantStore st = user.getMerchantStore();
if (store != null && st.getCode().equals(store.getCode())) {
authorized = true;
}
}
return authorized;
} catch (Exception e) {
throw new ServiceRuntimeException("Cannot authorize user " + userName + " for store " + merchantStoreCode, e.getMessage());
}
}
use of com.salesmanager.shop.model.security.ReadableGroup in project shopizer by shopizer-ecommerce.
the class UserFacadeImpl method convertUserToReadableUser.
private ReadableUser convertUserToReadableUser(Language lang, User user) {
ReadableUserPopulator populator = new ReadableUserPopulator();
try {
ReadableUser readableUser = new ReadableUser();
readableUser = populator.populate(user, readableUser, user.getMerchantStore(), lang);
List<Integer> groupIds = readableUser.getGroups().stream().map(ReadableGroup::getId).map(Long::intValue).collect(Collectors.toList());
List<ReadablePermission> permissions = findPermissionsByGroups(groupIds);
readableUser.setPermissions(permissions);
return readableUser;
} catch (ConversionException e) {
throw new ConversionRuntimeException(e);
}
}
use of com.salesmanager.shop.model.security.ReadableGroup in project shopizer by shopizer-ecommerce.
the class ReadableCustomerMapper method merge.
@Override
public ReadableCustomer merge(Customer source, ReadableCustomer target, MerchantStore store, Language language) {
if (source.getId() != null && source.getId() > 0) {
target.setId(source.getId());
}
target.setEmailAddress(source.getEmailAddress());
if (StringUtils.isNotEmpty(source.getNick())) {
target.setUserName(source.getNick());
}
if (source.getDefaultLanguage() != null) {
target.setLanguage(source.getDefaultLanguage().getCode());
}
if (source.getGender() != null) {
target.setGender(source.getGender().name());
}
if (StringUtils.isNotEmpty(source.getProvider())) {
target.setProvider(source.getProvider());
}
if (source.getBilling() != null) {
Address address = new Address();
address.setAddress(source.getBilling().getAddress());
address.setCity(source.getBilling().getCity());
address.setCompany(source.getBilling().getCompany());
address.setFirstName(source.getBilling().getFirstName());
address.setLastName(source.getBilling().getLastName());
address.setPostalCode(source.getBilling().getPostalCode());
address.setPhone(source.getBilling().getTelephone());
if (source.getBilling().getCountry() != null) {
address.setCountry(source.getBilling().getCountry().getIsoCode());
}
if (source.getBilling().getZone() != null) {
address.setZone(source.getBilling().getZone().getCode());
}
if (source.getBilling().getState() != null) {
address.setStateProvince(source.getBilling().getState());
}
target.setFirstName(address.getFirstName());
target.setLastName(address.getLastName());
target.setBilling(address);
}
if (source.getCustomerReviewAvg() != null) {
target.setRating(source.getCustomerReviewAvg().doubleValue());
}
if (source.getCustomerReviewCount() != null) {
target.setRatingCount(source.getCustomerReviewCount().intValue());
}
if (source.getDelivery() != null) {
Address address = new Address();
address.setCity(source.getDelivery().getCity());
address.setAddress(source.getDelivery().getAddress());
address.setCompany(source.getDelivery().getCompany());
address.setFirstName(source.getDelivery().getFirstName());
address.setLastName(source.getDelivery().getLastName());
address.setPostalCode(source.getDelivery().getPostalCode());
address.setPhone(source.getDelivery().getTelephone());
if (source.getDelivery().getCountry() != null) {
address.setCountry(source.getDelivery().getCountry().getIsoCode());
}
if (source.getDelivery().getZone() != null) {
address.setZone(source.getDelivery().getZone().getCode());
}
if (source.getDelivery().getState() != null) {
address.setStateProvince(source.getDelivery().getState());
}
target.setDelivery(address);
} else {
target.setDelivery(target.getBilling());
}
if (source.getAttributes() != null) {
for (CustomerAttribute attribute : source.getAttributes()) {
ReadableCustomerAttribute readableAttribute = new ReadableCustomerAttribute();
readableAttribute.setId(attribute.getId());
readableAttribute.setTextValue(attribute.getTextValue());
ReadableCustomerOption option = new ReadableCustomerOption();
option.setId(attribute.getCustomerOption().getId());
option.setCode(attribute.getCustomerOption().getCode());
CustomerOptionDescription d = new CustomerOptionDescription();
d.setDescription(attribute.getCustomerOption().getDescriptionsSettoList().get(0).getDescription());
d.setName(attribute.getCustomerOption().getDescriptionsSettoList().get(0).getName());
option.setDescription(d);
readableAttribute.setCustomerOption(option);
ReadableCustomerOptionValue optionValue = new ReadableCustomerOptionValue();
optionValue.setId(attribute.getCustomerOptionValue().getId());
CustomerOptionValueDescription vd = new CustomerOptionValueDescription();
vd.setDescription(attribute.getCustomerOptionValue().getDescriptionsSettoList().get(0).getDescription());
vd.setName(attribute.getCustomerOptionValue().getDescriptionsSettoList().get(0).getName());
optionValue.setCode(attribute.getCustomerOptionValue().getCode());
optionValue.setDescription(vd);
readableAttribute.setCustomerOptionValue(optionValue);
target.getAttributes().add(readableAttribute);
}
if (source.getGroups() != null) {
for (Group group : source.getGroups()) {
ReadableGroup readableGroup = new ReadableGroup();
readableGroup.setId(group.getId().longValue());
readableGroup.setName(group.getGroupName());
readableGroup.setType(group.getGroupType().name());
target.getGroups().add(readableGroup);
}
}
}
return target;
}
use of com.salesmanager.shop.model.security.ReadableGroup in project shopizer by shopizer-ecommerce.
the class SecurityApi method groups.
/**
* Load groups Requires service user authentication
*
* @return
*/
@GetMapping("/private/groups")
public List<ReadableGroup> groups() {
List<Group> groups = groupService.list();
List<ReadableGroup> readableGroups = new ArrayList<ReadableGroup>();
for (Group group : groups) {
ReadableGroup readableGroup = new ReadableGroup();
readableGroup.setName(group.getGroupName());
readableGroup.setId(group.getId().longValue());
readableGroup.setType(group.getGroupType().name());
readableGroups.add(readableGroup);
}
return readableGroups;
}
Aggregations