diff --git a/.github/workflows/shiftleft.yml b/.github/workflows/shiftleft.yml
new file mode 100644
index 000000000..79695c970
--- /dev/null
+++ b/.github/workflows/shiftleft.yml
@@ -0,0 +1,59 @@
+---
+# This workflow integrates ShiftLeft NG SAST with GitHub
+# Visit https://docs.shiftleft.io for help
+name: ShiftLeft
+
+on:
+ pull_request:
+ workflow_dispatch:
+
+jobs:
+ NextGen-Static-Analysis:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ # We are building this application with Java 11
+ - name: Setup Java JDK
+ uses: actions/setup-java@v1.4.3
+ with:
+ java-version: 11.0.x
+ - name: Package with maven
+ run: mvn compile package
+ - name: Download ShiftLeft CLI
+ run: |
+ curl https://cdn.shiftleft.io/download/sl > ${GITHUB_WORKSPACE}/sl && chmod a+rx ${GITHUB_WORKSPACE}/sl
+ # ShiftLeft requires Java 1.8. Post the package step override the version
+ - name: Setup Java JDK
+ uses: actions/setup-java@v1.4.3
+ with:
+ java-version: 1.8
+ - name: Extract branch name
+ shell: bash
+ run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
+ id: extract_branch
+ - name: NextGen Static Analysis
+ run: ${GITHUB_WORKSPACE}/sl analyze --wait --app shiftleft-java-demo --tag branch=${{ github.head_ref || steps.extract_branch.outputs.branch }} --vcs-prefix-correction "io/shiftleft=src/main/java/" --java --cpg target/hello-shiftleft-0.0.1.jar
+ env:
+ SHIFTLEFT_ACCESS_TOKEN: ${{ secrets.SHIFTLEFT_ACCESS_TOKEN }}
+
+ Build-Rules:
+ runs-on: ubuntu-latest
+ needs: NextGen-Static-Analysis
+ steps:
+ - uses: actions/checkout@v2
+ - name: Download ShiftLeft CLI
+ run: |
+ curl https://cdn.shiftleft.io/download/sl > ${GITHUB_WORKSPACE}/sl && chmod a+rx ${GITHUB_WORKSPACE}/sl
+ - name: Validate Build Rules
+ run: |
+ ${GITHUB_WORKSPACE}/sl check-analysis --app shiftleft-java-demo \
+ --branch "${{ github.head_ref || steps.extract_branch.outputs.branch }}" \
+ --report \
+ --github-pr-number=${{github.event.number}} \
+ --github-pr-user=${{ github.repository_owner }} \
+ --github-pr-repo=${{ github.event.repository.name }} \
+ --github-token=${{ secrets.GITHUB_TOKEN }}
+ env:
+ SHIFTLEFT_ACCESS_TOKEN: ${{ secrets.SHIFTLEFT_ACCESS_TOKEN }}
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index eb17410c8..1ea555e1e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -67,7 +67,11 @@
spring-boot-starter-test
test
-
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
org.springframework
spring-web
diff --git a/shiftleft.yml b/shiftleft.yml
new file mode 100644
index 000000000..220d4baf4
--- /dev/null
+++ b/shiftleft.yml
@@ -0,0 +1,12 @@
+build_rules:
+ - id: allow-zero-findings
+ finding_types:
+ - vuln
+ - secret
+ - insight
+ - "*"
+ severity:
+ - SEVERITY_MEDIUM_IMPACT
+ - SEVERITY_HIGH_IMPACT
+ - SEVERITY_LOW_IMPACT
+ threshold: 0
\ No newline at end of file
diff --git a/src/main/java/io/shiftleft/controller/CustomerController.java b/src/main/java/io/shiftleft/controller/CustomerController.java
index 40e1c4917..33a6ddaf2 100644
--- a/src/main/java/io/shiftleft/controller/CustomerController.java
+++ b/src/main/java/io/shiftleft/controller/CustomerController.java
@@ -51,7 +51,7 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.WebRequest;
-
+import org.springframekwork.validation.annotation.Validated;
import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties;
import io.shiftleft.data.DataLoader;
@@ -71,7 +71,7 @@
@PropertySource({ "classpath:config/application-sfdc.properties" })
@RestController
public class CustomerController {
-
+ @Validated
@Autowired
private CustomerRepository customerRepository;
diff --git a/src/main/java/io/shiftleft/model/Customer.java b/src/main/java/io/shiftleft/model/Customer.java
index 6ecdc3000..6ef84e498 100644
--- a/src/main/java/io/shiftleft/model/Customer.java
+++ b/src/main/java/io/shiftleft/model/Customer.java
@@ -10,6 +10,7 @@
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
+import javax.validation.constraints.Pattern;
@Entity
public class Customer {
@@ -53,7 +54,9 @@ public Customer(String customerId, int clientId, String firstName, String lastNa
private String tin;
private String phoneNumber;
-
+
+ @Pattern(regexp = "[0-9]{3}-[0-9]{3}-[0-9]{4}")
+
@OneToOne(cascade = { CascadeType.ALL })
private Address address;