improve client side validation for repository names

This commit is contained in:
Sebastian Sdorra
2012-05-10 19:08:54 +02:00
parent 17ab9e60b9
commit 0ca618bd03
3 changed files with 47 additions and 1 deletions

View File

@@ -55,6 +55,9 @@
<link rel="stylesheet" type="text/css" href="resources/extjs/resources/css/xtheme-scmslate.css" />
<link rel="stylesheet" type="text/css" href="resources/css/style.css" />
<!-- core overrides -->
<script type="text/javascript" src="resources/js/sonia.core.js"></script>
<!-- extjs -->
<script type="text/javascript" src="resources/extjs/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="resources/extjs/ext-all-debug.js"></script>

View File

@@ -53,7 +53,11 @@ Ext.apply(Ext.form.VTypes, {
// repository name validator
repositoryName: function(val){
return /^[A-z0-9\.\-_\/]+$/.test(val);
return /^[A-z0-9][A-z0-9\.\-_\/]*$/.test(val)
&& ! val.contains('..')
&& ! val.endsWith('/.')
&& ! val.endsWith('/')
&& ! val.endsWith('.');
},
repositoryNameText: 'The name of the repository is invalid.',

View File

@@ -0,0 +1,39 @@
/* *
* Copyright (c) 2010, Sebastian Sdorra
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of SCM-Manager; nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* http://bitbucket.org/sdorra/scm-manager
*
*/
String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
String.prototype.contains = function(val) {
return this.indexOf(val) >= 0;
};