Details
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/admin/model/permission/Permissions.java b/sm-shop/src/main/java/com/salesmanager/shop/admin/model/permission/Permissions.java
new file mode 100755
index 0000000..1130241
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/shop/admin/model/permission/Permissions.java
@@ -0,0 +1,49 @@
+
+package com.salesmanager.shop.admin.model.permission;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+ "permission"
+})
+public class Permissions implements Serializable
+{
+
+ @JsonProperty("permission")
+ private List<ShopPermission> shopPermission = null;
+ @JsonIgnore
+ private Map<String, Object> additionalProperties = new HashMap<String, Object>();
+ private final static long serialVersionUID = 8484447758224382575L;
+
+ @JsonProperty("permission")
+ public List<ShopPermission> getShopPermission() {
+ return shopPermission;
+ }
+
+ @JsonProperty("permission")
+ public void setShopPermission(List<ShopPermission> shopPermission) {
+ this.shopPermission = shopPermission;
+ }
+
+ @JsonAnyGetter
+ public Map<String, Object> getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ @JsonAnySetter
+ public void setAdditionalProperty(String name, Object value) {
+ this.additionalProperties.put(name, value);
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/admin/model/permission/ShopGroup.java b/sm-shop/src/main/java/com/salesmanager/shop/admin/model/permission/ShopGroup.java
new file mode 100755
index 0000000..73201a7
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/shop/admin/model/permission/ShopGroup.java
@@ -0,0 +1,49 @@
+
+package com.salesmanager.shop.admin.model.permission;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+ "name"
+})
+public class ShopGroup implements Serializable
+{
+
+ @JsonProperty("name")
+ private List<String> name = null;
+ @JsonIgnore
+ private Map<String, Object> additionalProperties = new HashMap<String, Object>();
+ private final static long serialVersionUID = 8390421982207090115L;
+
+ @JsonProperty("name")
+ public List<String> getName() {
+ return name;
+ }
+
+ @JsonProperty("name")
+ public void setName(List<String> name) {
+ this.name = name;
+ }
+
+ @JsonAnyGetter
+ public Map<String, Object> getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ @JsonAnySetter
+ public void setAdditionalProperty(String name, Object value) {
+ this.additionalProperties.put(name, value);
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/admin/model/permission/ShopPermission.java b/sm-shop/src/main/java/com/salesmanager/shop/admin/model/permission/ShopPermission.java
new file mode 100755
index 0000000..db23a04
--- /dev/null
+++ b/sm-shop/src/main/java/com/salesmanager/shop/admin/model/permission/ShopPermission.java
@@ -0,0 +1,61 @@
+
+package com.salesmanager.shop.admin.model.permission;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+ "type",
+ "group"
+})
+public class ShopPermission implements Serializable
+{
+
+ @JsonProperty("type")
+ private String type;
+ @JsonProperty("group")
+ private ShopGroup shopGroup;
+ @JsonIgnore
+ private Map<String, Object> additionalProperties = new HashMap<String, Object>();
+ private final static long serialVersionUID = -7938476709520334066L;
+
+ @JsonProperty("type")
+ public String getType() {
+ return type;
+ }
+
+ @JsonProperty("type")
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ @JsonProperty("group")
+ public ShopGroup getShopGroup() {
+ return shopGroup;
+ }
+
+ @JsonProperty("group")
+ public void setShopGroup(ShopGroup shopGroup) {
+ this.shopGroup = shopGroup;
+ }
+
+ @JsonAnyGetter
+ public Map<String, Object> getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ @JsonAnySetter
+ public void setAdditionalProperty(String name, Object value) {
+ this.additionalProperties.put(name, value);
+ }
+
+}
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/init/data/InitializationLoader.java b/sm-shop/src/main/java/com/salesmanager/shop/init/data/InitializationLoader.java
index 85a3e07..b08372b 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/init/data/InitializationLoader.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/init/data/InitializationLoader.java
@@ -1,13 +1,6 @@
package com.salesmanager.shop.init.data;
-import javax.annotation.PostConstruct;
-import javax.inject.Inject;
-
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.salesmanager.core.business.constants.SystemConstants;
import com.salesmanager.core.business.exception.ServiceException;
import com.salesmanager.core.business.services.merchant.MerchantStoreService;
@@ -23,9 +16,25 @@ import com.salesmanager.core.model.system.SystemConfiguration;
import com.salesmanager.core.model.user.Group;
import com.salesmanager.core.model.user.GroupType;
import com.salesmanager.core.model.user.Permission;
+import com.salesmanager.shop.admin.model.permission.Permissions;
+import com.salesmanager.shop.admin.model.permission.ShopPermission;
import com.salesmanager.shop.admin.security.WebUserServices;
import com.salesmanager.shop.constants.ApplicationConstants;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.core.io.ResourceLoader;
+import org.springframework.stereotype.Component;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+import javax.xml.transform.stream.StreamSource;
@Component
@@ -42,14 +51,14 @@ public class InitializationLoader {
private InitializationDatabase initializationDatabase;
@Inject
- private com.salesmanager.shop.init.data.InitData initData;
+ private InitData initData;
@Inject
private SystemConfigurationService systemConfigurationService;
@Inject
private WebUserServices userDetailsService;
-
+
@Inject
protected PermissionService permissionService;
@@ -61,6 +70,12 @@ public class InitializationLoader {
@Inject
protected MerchantStoreService merchantService;
+
+ @Inject
+ private ObjectMapper jacksonObjectMapper;
+
+ @Inject
+ private ResourceLoader resourceLoader;
@PostConstruct
public void init() {
@@ -68,8 +83,13 @@ public class InitializationLoader {
try {
if (initializationDatabase.isEmpty()) {
-
-
+
+ File permissionXML=resourceLoader.getResource("classpath:/permission/permission.json").getFile();
+ StreamSource xmlSource = new StreamSource(permissionXML);
+ //Permissions permissions= (Permissions) jaxb2Marshaller.unmarshal(xmlSource);
+
+ Permissions permissions= jacksonObjectMapper.readValue(permissionXML,Permissions.class);
+
//All default data to be created
LOGGER.info(String.format("%s : Shopizer database is empty, populate it....", "sm-shop"));
@@ -80,124 +100,33 @@ public class InitializationLoader {
//security groups and permissions
- Group gsuperadmin = new Group("SUPERADMIN");
- gsuperadmin.setGroupType(GroupType.ADMIN);
-
- Group gadmin = new Group("ADMIN");
- gadmin.setGroupType(GroupType.ADMIN);
-
- Group gcatalogue = new Group("ADMIN_CATALOGUE");
- gcatalogue.setGroupType(GroupType.ADMIN);
-
- Group gstore = new Group("ADMIN_STORE");
- gstore.setGroupType(GroupType.ADMIN);
-
- Group gorder = new Group("ADMIN_ORDER");
- gorder.setGroupType(GroupType.ADMIN);
-
- Group gcontent = new Group("ADMIN_CONTENT");
- gcontent.setGroupType(GroupType.ADMIN);
-
- groupService.create(gsuperadmin);
- groupService.create(gadmin);
- groupService.create(gcatalogue);
- groupService.create(gstore);
- groupService.create(gorder);
- groupService.create(gcontent);
-
- Permission storeadmin = new Permission("STORE_ADMIN");//Administrator of the store
- storeadmin.getGroups().add(gsuperadmin);
- storeadmin.getGroups().add(gadmin);
- permissionService.create(storeadmin);
-
- Permission superadmin = new Permission("SUPERADMIN");
- superadmin.getGroups().add(gsuperadmin);
- permissionService.create(superadmin);
-
- Permission admin = new Permission("ADMIN");
- admin.getGroups().add(gsuperadmin);
- admin.getGroups().add(gadmin);
- permissionService.create(admin);
-
- Permission auth = new Permission("AUTH");//Authenticated
- auth.getGroups().add(gsuperadmin);
- auth.getGroups().add(gadmin);
- auth.getGroups().add(gcatalogue);
- auth.getGroups().add(gstore);
- auth.getGroups().add(gorder);
- permissionService.create(auth);
+ Map<String, Group> groupMap = new HashMap<String,Group>();
+ if(CollectionUtils.isNotEmpty(permissions.getShopPermission())){
-
- Permission products = new Permission("PRODUCTS");
- products.getGroups().add(gsuperadmin);
- products.getGroups().add(gadmin);
- products.getGroups().add(gcatalogue);
- permissionService.create(products);
+ for(ShopPermission shopPermission : permissions.getShopPermission()){
-
- Permission order = new Permission("ORDER");
- order.getGroups().add(gsuperadmin);
- order.getGroups().add(gorder);
- order.getGroups().add(gadmin);
- permissionService.create(order);
-
- Permission content = new Permission("CONTENT");
- content.getGroups().add(gsuperadmin);
- content.getGroups().add(gadmin);
- content.getGroups().add(gcontent);
- permissionService.create(content);
-
-
-
- Permission pstore = new Permission("STORE");
- pstore.getGroups().add(gsuperadmin);
- pstore.getGroups().add(gstore);
- pstore.getGroups().add(gadmin);
- permissionService.create(pstore);
-
- Permission tax = new Permission("TAX");
- tax.getGroups().add(gsuperadmin);
- tax.getGroups().add(gstore);
- tax.getGroups().add(gadmin);
- permissionService.create(tax);
-
-
- Permission payment = new Permission("PAYMENT");
- payment.getGroups().add(gsuperadmin);
- payment.getGroups().add(gstore);
- payment.getGroups().add(gadmin);
- permissionService.create(payment);
-
- Permission customer = new Permission("CUSTOMER");
- customer.getGroups().add(gsuperadmin);
- customer.getGroups().add(gstore);
- customer.getGroups().add(gadmin);
- permissionService.create(customer);
-
-
- Permission shipping = new Permission("SHIPPING");
- shipping.getGroups().add(gsuperadmin);
- shipping.getGroups().add(gadmin);
- shipping.getGroups().add(gstore);
-
- permissionService.create(shipping);
-
-
-
- userDetailsService.createDefaultAdmin();
-
-
- //load customer groups and permissions
- Group gcustomer = new Group("CUSTOMER");
- gcustomer.setGroupType(GroupType.CUSTOMER);
-
- groupService.create(gcustomer);
-
- Permission gcustomerpermission = new Permission("AUTH_CUSTOMER");
- gcustomerpermission.getGroups().add(gcustomer);
- permissionService.create(gcustomerpermission);
-
- MerchantConfig config = new MerchantConfig();
+ Permission permission = new Permission(shopPermission.getType());
+
+ for(String groupName: shopPermission.getShopGroup().getName()){
+ if(groupMap.get(groupName) == null){
+ Group group = new Group(groupName);
+ group.setGroupType(GroupType.ADMIN);
+ groupService.create(group);
+ groupMap.put(groupName,group);
+ permission.getGroups().add(group);
+ }
+ else{
+ permission.getGroups().add(groupMap.get(groupName)) ;
+ }
+ permissionService.create( permission);
+ }
+
+
+ }
+ }
+
+ userDetailsService.createDefaultAdmin();
+ MerchantConfig config = new MerchantConfig();
config.setAllowPurchaseItems(true);
config.setDisplayAddToCartOnFeaturedItems(true);
@@ -220,28 +149,28 @@ public class InitializationLoader {
String loadTestData = configuration.getProperty(ApplicationConstants.POPULATE_TEST_DATA);
boolean loadData = !StringUtils.isBlank(loadTestData) && loadTestData.equals(SystemConstants.CONFIG_VALUE_TRUE);
-
+
if(loadData) {
-
+
SystemConfiguration configuration = systemConfigurationService.getByKey(ApplicationConstants.TEST_DATA_LOADED);
-
+
if(configuration!=null) {
if(configuration.getKey().equals(ApplicationConstants.TEST_DATA_LOADED)) {
if(configuration.getValue().equals(SystemConstants.CONFIG_VALUE_TRUE)) {
- return;
+ return;
}
- }
+ }
}
-
+
initData.initInitialData();
-
+
configuration = new SystemConfiguration();
configuration.getAuditSection().setModifiedBy(SystemConstants.SYSTEM_USER);
configuration.setKey(ApplicationConstants.TEST_DATA_LOADED);
configuration.setValue(SystemConstants.CONFIG_VALUE_TRUE);
systemConfigurationService.create(configuration);
-
-
+
+
}
}
diff --git a/sm-shop/src/main/resources/permission/permission.json b/sm-shop/src/main/resources/permission/permission.json
new file mode 100644
index 0000000..aab6a31
--- /dev/null
+++ b/sm-shop/src/main/resources/permission/permission.json
@@ -0,0 +1,122 @@
+{
+ "permission": [
+ {
+ "type": "STORE_ADMIN",
+ "group": {
+ "name": [
+ "SUPERADMIN",
+ "ADMIN"
+ ]
+ }
+ },
+ {
+ "type": "SUPERADMIN",
+ "group": { "name": ["SUPERADMIN"] }
+ },
+ {
+ "type": "ADMIN",
+ "group": {
+ "name": [
+ "SUPERADMIN",
+ "ADMIN"
+ ]
+ }
+ },
+ {
+ "type": "AUTH",
+ "group": {
+ "name": [
+ "SUPERADMIN",
+ "ADMIN",
+ "ADMIN_CATALOGUE",
+ "ADMIN_STORE",
+ "ADMIN_ORDER"
+ ]
+ }
+ },
+ {
+ "type": "PRODUCTS",
+ "group": {
+ "name": [
+ "SUPERADMIN",
+ "ADMIN",
+ "ADMIN_CATALOGUE"
+ ]
+ }
+ },
+ {
+ "type": "ORDER",
+ "group": {
+ "name": [
+ "SUPERADMIN",
+ "ADMIN",
+ "ADMIN_ORDER"
+ ]
+ }
+ },
+ {
+ "type": "CONTENT",
+ "group": {
+ "name": [
+ "SUPERADMIN",
+ "ADMIN",
+ "ADMIN_CONTENT"
+ ]
+ }
+ },
+ {
+ "type": "STORE",
+ "group": {
+ "name": [
+ "SUPERADMIN",
+ "ADMIN",
+ "ADMIN_STORE"
+ ]
+ }
+ },
+ {
+ "type": "TAX",
+ "group": {
+ "name": [
+ "SUPERADMIN",
+ "ADMIN",
+ "ADMIN_STORE"
+ ]
+ }
+ },
+ {
+ "type": "PAYMENT",
+ "group": {
+ "name": [
+ "SUPERADMIN",
+ "ADMIN",
+ "ADMIN_STORE"
+ ]
+ }
+ },
+ {
+ "type": "CUSTOMER",
+ "group": {
+ "name": [
+ "SUPERADMIN",
+ "ADMIN",
+ "ADMIN_STORE"
+ ]
+ }
+ },
+ {
+ "type": "SHIPPING",
+ "group": {
+ "name": [
+ "SUPERADMIN",
+ "ADMIN",
+ "ADMIN_STORE"
+ ]
+ }
+ },
+ {
+ "type": "AUTH_CUSTOMER",
+ "group": { "name": ["CUSTOMER" ]}
+ }
+ ]
+ }