Skip to content

Commit

Permalink
GH-2370: Improve validation of dataset graph names
Browse files Browse the repository at this point in the history
  • Loading branch information
kinow committed Mar 27, 2024
1 parent d034081 commit bb3af31
Showing 1 changed file with 29 additions and 6 deletions.
35 changes: 29 additions & 6 deletions jena-fuseki2/jena-fuseki-ui/src/views/dataset/Upload.vue
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
placeholder="Leave blank for default graph"
/>
<div class="invalid-feedback">
Invalid graph name. Please remove any spaces.
Invalid graph name. Please remove any spaces and encoded values.
</div>
</div>
</div>
Expand Down Expand Up @@ -416,15 +416,38 @@ export default {
return this.validateGraphName() && this.validateFiles()
},
validateGraphName () {
// No spaces allowed in graph names.
const pattern = /^[^\s]+$/
const graphName = this.$refs['dataset-graph-name'].value
if (graphName === '' || pattern.test(graphName)) {
// An empty graph name is OK.
if (graphName === '') {
this.graphNameClasses = ['form-control is-valid']
return true
}
this.graphNameClasses = ['form-control is-invalid']
return false
// No spaces allowed in graph names.
const pattern = /^\S+$/
if (!pattern.test(graphName)) {
this.graphNameClasses = ['form-control is-invalid']
return false
}
// Only valid URIs allowed.
try {
new URL(graphName)
} catch {
this.graphNameClasses = ['form-control is-invalid']
return false
}
// Encoded components are not allowed.
try {
if (decodeURI(graphName) !== decodeURIComponent(graphName)) {
this.graphNameClasses = ['form-control is-invalid']
return false
}
} catch {
this.graphNameClasses = ['form-control is-invalid']
return false
}
// If it reached this part, then it's a valid graph name.
this.graphNameClasses = ['form-control is-valid']
return true
},
validateFiles () {
if (this.upload.files !== null && this.upload.files.length > 0) {
Expand Down

0 comments on commit bb3af31

Please sign in to comment.