You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sm...@apache.org on 2015/03/12 04:55:10 UTC

[38/51] [partial] airavata-php-gateway git commit: importing PGA into new repo - details are discussed at AIRAVATA-1627

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/libraries/xml_id_utilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/xml_id_utilities.php b/app/libraries/xml_id_utilities.php
new file mode 100755
index 0000000..6b54767
--- /dev/null
+++ b/app/libraries/xml_id_utilities.php
@@ -0,0 +1,252 @@
+<?php
+/**
+ * Utilities for ID management with an XML file
+ */
+
+//include 'id_utilities.php';
+
+class XmlIdUtilities implements IdUtilities
+{
+    const DB_PATH = 'users.xml';
+
+    /**
+     * Connect to the user database.
+     * @return mixed|void
+     */
+    public function connect()
+    {
+        global $db;
+
+
+        try
+        {
+            if (file_exists(self::DB_PATH))
+            {
+                $db = simplexml_load_file(self::DB_PATH);
+            }
+            else
+            {
+                throw new Exception("Error: Cannot connect to database!");
+            }
+
+
+            if (!$db)
+            {
+                throw new Exception('Error: Cannot open database!');
+            }
+        }
+        catch (Exception $e)
+        {
+            echo '<div>' . $e->getMessage() . '</div>';
+        }
+    }
+
+    /**
+     * Return true if the given username exists in the database.
+     * @param $username
+     * @return bool
+     */
+    public function username_exists($username)
+    {
+        global $db;
+
+        foreach($db->xpath('//username') as $db_username)
+        {
+            if ($db_username == $username)
+            {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Authenticate the user given username and password.
+     * @param $username
+     * @param $password
+     * @return int|mixed
+     */
+    public function authenticate($username, $password)
+    {
+        global $db;
+
+        $hashed_password = md5($password);
+        
+        $user = $db->xpath('//user[username="' . $username . '"]');
+
+        if (sizeof($user) == 1)
+        {
+            return $user[0]->password_hash == $hashed_password;
+        }
+        elseif(sizeof($user) == 0)
+        {
+            return -1;
+        }
+        else // duplicate users in database
+        {
+            return -2;
+        }
+    }
+
+    /**
+     * Add a new user to the database.
+     * @param $username
+     * @param $password
+     * @return mixed|void
+     */
+    public function add_user($username, $password, $first_name, $last_name, $email, $organization,
+            $address, $country,$telephone, $mobile, $im, $url)
+    {
+        global $db;
+
+        $users = $db->xpath('//users');
+
+        $user = $users[0]->addChild('user');
+
+        $user->addChild('username', $username);
+        $user->addChild('password_hash', md5($password));
+
+        //Format XML to save indented tree rather than one line
+        $dom = new DOMDocument('1.0');
+        $dom->preserveWhiteSpace = false;
+        $dom->formatOutput = true;
+        $dom->loadXML($db->asXML());
+        $dom->save('users.xml');
+    }
+
+    /**
+     * Get the user profile
+     * @param $username
+     * @return mixed|void
+     */
+    public function get_user_profile($username)
+    {
+        // TODO: Implement get_user_profile() method.
+    }
+
+    /**
+     * Update the user profile
+     *
+     * @param $username
+     * @param $first_name
+     * @param $last_name
+     * @param $email
+     * @param $organization
+     * @param $address
+     * @param $country
+     * @param $telephone
+     * @param $mobile
+     * @param $im
+     * @param $url
+     * @return mixed
+     */
+    public function update_user_profile($username, $first_name, $last_name, $email, $organization, $address,
+                                        $country, $telephone, $mobile, $im, $url)
+    {
+        // TODO: Implement update_user_profile() method.
+    }
+
+    /**
+     * Function to update user password
+     *
+     * @param $username
+     * @param $current_password
+     * @param $new_password
+     * @return mixed
+     */
+    public function change_password($username, $current_password, $new_password)
+    {
+        // TODO: Implement change_password() method.
+    }
+
+    /**
+     * Function to remove an existing user
+     *
+     * @param $username
+     * @return void
+     */
+    public function remove_user($username)
+    {
+        // TODO: Implement remove_user() method.
+    }
+
+    /**
+     * Function to check whether a user has permission for a particular permission string(api method).
+     *
+     * @param $username
+     * @param $permission_string
+     * @return bool
+     */
+    public function checkPermissionForUser($username, $permission_string)
+    {
+        // TODO: Implement checkPermissionForUser() method.
+    }
+
+    /**
+     * Function to get all the permissions that a particular user has.
+     *
+     * @param $username
+     * @return mixed
+     */
+    public function getUserPermissions($username)
+    {
+        // TODO: Implement getUserPermissions() method.
+    }
+
+    /**
+     * Function to get the entire list of roles in the application
+     *
+     * @return mixed
+     */
+    public function getRoleList()
+    {
+        // TODO: Implement getRoleList() method.
+    }
+
+    /**
+     * Function to get the role list of a user
+     *
+     * @param $username
+     * @return mixed
+     */
+    public function getRoleListOfUser($username)
+    {
+        // TODO: Implement getRoleListOfUser() method.
+    }
+
+    /**
+     * Function to get the user list of a particular role
+     *
+     * @param $role
+     * @return mixed
+     */
+    public function getUserListOfRole($role)
+    {
+        // TODO: Implement getUserListOfRole() method.
+    }
+
+    /**
+     * Function to add a role to a user
+     *
+     * @param $username
+     * @param $role
+     * @return void
+     */
+    public function addUserToRole($username, $role)
+    {
+        // TODO: Implement addUserToRole() method.
+    }
+
+    /**
+     * Function to role from user
+     *
+     * @param $username
+     * @param $role
+     * @return void
+     */
+    public function removeUserFromRole($username, $role)
+    {
+        // TODO: Implement removeUserFromRole() method.
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/models/Constant.php
----------------------------------------------------------------------
diff --git a/app/models/Constant.php b/app/models/Constant.php
new file mode 100644
index 0000000..f18ba41
--- /dev/null
+++ b/app/models/Constant.php
@@ -0,0 +1,48 @@
+<?php
+
+class Constant extends Eloquent{
+
+
+	const EXPERIMENT_DATA_ROOT = '/../experimentData/';
+
+	/* 
+
+	------------ now rest all are handled at config/app-config.ini -------------------
+
+	const AIRAVATA_SERVER = 'gw111.iu.xsede.org';
+	//const AIRAVATA_SERVER = 'gw127.iu.xsede.org';
+	//const AIRAVATA_SERVER = 'gw56.iu.xsede.org'; //Mirror
+	//const AIRAVATA_PORT = 8930; //development
+	const AIRAVATA_PORT = 9930; //production
+	const AIRAVATA_TIMEOUT = 100000;
+	const EXPERIMENT_DATA_ROOT = '/../experimentData/';
+
+	const SSH_USER = 'root';
+	//const DATA_PATH = 'file://home/pga/production/experimentData/';
+
+	const EXPERIMENT_DATA_ROOT_ABSOLUTE = '/var/www/experimentData/';
+	//const EXPERIMENT_DATA_ROOT_ABSOLUTE = 'C:/wamp/www/experimentData/';
+
+	//const USER_STORE = 'WSO2','XML','USER_API';
+	const USER_STORE = 'WSO2';
+
+	//This will need to be updated everytime a new user role is being added for
+	//specific purposes.
+	const ADMIN_ROLE = "admin";
+	const GATEWAY_ADMIN_ROLE = "gateway_admin";
+	const USER_ROLE = "Internal/everyone";
+
+	//identity server roles assigned for Gateway
+	const GATEWAY_ROLE_PREPEND = "gateway_";
+	const GATEWAY_ROLE_ADMIN_APPEND = "_admin";
+
+	const REQ_URL = 'https://gw111.iu.xsede.org:8443/credential-store/acs-start-servlet';
+	const GATEWAY_NAME = 'PHP-Reference-Gateway';
+	const EMAIL = 'admin@gw120.iu.xsede.org';	
+
+	const SERVER_ALLOWED_FILE_SIZE = 64; // in MB
+
+	*/ 
+}
+
+?>

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/models/User.php
----------------------------------------------------------------------
diff --git a/app/models/User.php b/app/models/User.php
new file mode 100755
index 0000000..0d96f81
--- /dev/null
+++ b/app/models/User.php
@@ -0,0 +1,25 @@
+<?php
+
+use Illuminate\Auth\UserTrait;
+use Illuminate\Auth\UserInterface;
+use Illuminate\Auth\Reminders\RemindableTrait;
+use Illuminate\Auth\Reminders\RemindableInterface;
+
+class User extends Eloquent implements UserInterface, RemindableInterface {
+
+	use UserTrait, RemindableTrait;
+
+	/**
+	 * The database table used by the model.
+	 *
+	 * @var string
+	 */
+	protected $table = 'users';
+
+	/**
+	 * The attributes excluded from the model's JSON form.
+	 *
+	 * @var array
+	 */
+	protected $hidden = array('password', 'remember_token');
+}

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/resources/assets/PoweredbyAiravata_Small.png
----------------------------------------------------------------------
diff --git a/app/resources/assets/PoweredbyAiravata_Small.png b/app/resources/assets/PoweredbyAiravata_Small.png
new file mode 100755
index 0000000..7178e31
Binary files /dev/null and b/app/resources/assets/PoweredbyAiravata_Small.png differ

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/resources/assets/favicon.ico
----------------------------------------------------------------------
diff --git a/app/resources/assets/favicon.ico b/app/resources/assets/favicon.ico
new file mode 100755
index 0000000..541659e
Binary files /dev/null and b/app/resources/assets/favicon.ico differ

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/resources/assets/scigap-header-logo.png
----------------------------------------------------------------------
diff --git a/app/resources/assets/scigap-header-logo.png b/app/resources/assets/scigap-header-logo.png
new file mode 100755
index 0000000..6e8bf4a
Binary files /dev/null and b/app/resources/assets/scigap-header-logo.png differ

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/resources/oa4mp/oauth-properties.ini
----------------------------------------------------------------------
diff --git a/app/resources/oa4mp/oauth-properties.ini b/app/resources/oa4mp/oauth-properties.ini
new file mode 100755
index 0000000..d9e5b9b
--- /dev/null
+++ b/app/resources/oa4mp/oauth-properties.ini
@@ -0,0 +1,15 @@
+; Configuration file for XSEDE properties
+
+oauth_privkey_file = "/var/www/PHP-Reference-Gateway/resources/oa4mp/oauth-privkey.pk8"
+oauth_privkey_pem = "/var/www/PHP-Reference-Gateway/resources/oa4mp/oauth-privkey.pem"
+
+home_url = "https://gw120.iu.xsede.org/PHP-Reference-Gateway/xsede_login.php"
+oa4mp_id = "myproxy:oa4mp,2012:/client/5a323fc6fcffcff7a95401046a303520"
+
+dn[countryName] = "US"
+dn[stateOrProvinceName] = "IN"
+dn[localityName] = "Bloomington"
+dn[organizationName] = "IU"
+dn[organizationalUnitName] = "SGG"
+dn[commonName] = "gw120.iu.xsede.org"
+dn[emailAddress] = "yuma@iu.edu"

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/resources/security/idp_scigap_org.pem
----------------------------------------------------------------------
diff --git a/app/resources/security/idp_scigap_org.pem b/app/resources/security/idp_scigap_org.pem
new file mode 100755
index 0000000..6cb8cf3
--- /dev/null
+++ b/app/resources/security/idp_scigap_org.pem
@@ -0,0 +1,83 @@
+-----BEGIN CERTIFICATE-----
+MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
+MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
+IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
+MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
+FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
+bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
+dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
+H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
+uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
+mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
+a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
+E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
+WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
+VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
+Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
+cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
+IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
+AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
+YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
+6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
+Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
+c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
+mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEwzCCA6ugAwIBAgIQf3HB06ImsNKxE/PmgWdkPjANBgkqhkiG9w0BAQUFADBv
+MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk
+ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF
+eHRlcm5hbCBDQSBSb290MB4XDTEwMTIwNzAwMDAwMFoXDTIwMDUzMDEwNDgzOFow
+UTELMAkGA1UEBhMCVVMxEjAQBgNVBAoTCUludGVybmV0MjERMA8GA1UECxMISW5D
+b21tb24xGzAZBgNVBAMTEkluQ29tbW9uIFNlcnZlciBDQTCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBAJd8x8j+s+kgaqOkT46ONFYGs3psqhCbSGErNpBp
+4zQKR6e7e96qavvrgpWPyh1/r3WmqEzaIGdhGg2GwcrBh6+sTuTeYhsvnbGYr8YB
++xdw26wUWexvPzN/ppgL5OI4r/V/hW0OdASd9ieGx5uP53EqCPQDAkBjJH1AV49U
+4FR+thNIYfHezg69tvpNmLLZDY15puCqzQyRmqXfq3O7yhR4XEcpocrFup/H2mD3
+/+d/8tnaoS0PSRan0wCSz4pH2U341ZVm03T5gGMAT0yEFh+z9SQfoU7e6JXWsgsJ
+iyxrx1wvjGPJmctSsWJ7cwFif2Ns2Gig7mqojR8p89AYrK0CAwEAAaOCAXcwggFz
+MB8GA1UdIwQYMBaAFK29mHo0tCb3+sQmVO8DveAky1QaMB0GA1UdDgQWBBRIT1r6
+L0qaXuBQ82t7VaXe9b40XTAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB
+/wIBADARBgNVHSAECjAIMAYGBFUdIAAwRAYDVR0fBD0wOzA5oDegNYYzaHR0cDov
+L2NybC51c2VydHJ1c3QuY29tL0FkZFRydXN0RXh0ZXJuYWxDQVJvb3QuY3JsMIGz
+BggrBgEFBQcBAQSBpjCBozA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1
+c3QuY29tL0FkZFRydXN0RXh0ZXJuYWxDQVJvb3QucDdjMDkGCCsGAQUFBzAChi1o
+dHRwOi8vY3J0LnVzZXJ0cnVzdC5jb20vQWRkVHJ1c3RVVE5TR0NDQS5jcnQwJQYI
+KwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEF
+BQADggEBAJNmIYB0RYVLwqvOMrAp/t3f1iRbvwNqb1A+DhuzDYijW+7EpBI7Vu8G
+f89/IZVWO0Ex/uGqk9KV85UNPEerylwmrT7x+Yw0bhG+9GfjAkn5pnx7ZCXdF0by
+UOPjCiE6SSTNxoRlaGdosEUtR5nNnKuGKRFy3NacNkN089SXnlag/l9AWNLV1358
+xY4asgRckmYOha0uBs7Io9jrFCeR3s8XMIFTtmYSrTfk9e+WXCAONumsYn0ZgYr1
+kGGmSavOPN/mymTugmU5RZUWukEGAJi6DFZh5MbGhgHPZqkiKQLWPc/EKo2Z3vsJ
+FJ4O0dXG14HdrSSrrAcF4h1ow3BmX9M=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFFTCCA/2gAwIBAgIQEUBLlISAS3rT/GaBSZxRUTANBgkqhkiG9w0BAQUFADBR
+MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSW50ZXJuZXQyMREwDwYDVQQLEwhJbkNv
+bW1vbjEbMBkGA1UEAxMSSW5Db21tb24gU2VydmVyIENBMB4XDTE0MDUwMTAwMDAw
+MFoXDTE3MDQzMDIzNTk1OVowgYIxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJJTjEU
+MBIGA1UEBxMLQmxvb21pbmd0b24xGzAZBgNVBAoTEkluZGlhbmEgVW5pdmVyc2l0
+eTEaMBgGA1UECxMRSWRlbnRpdHkgUHJvdmlkZXIxFzAVBgNVBAMTDmlkcC5zY2ln
+YXAub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4dFhVixu23vB
+dpTR31H4DWB+PObD2yV0R0eRq8iBVKkvtu4HRt1ClBjZnmfpK1K1pfsO8CSLNjEu
+8ZA7AnynalMjN9DMzWjlYzoezc8vC5RIhGT7n7UAIBmHXXXUuNEr99/BB0rWvWa0
+BlBPZ+JmNn6rO1n4m8RK+Uf06GJogHRmWy3AakNdBT3s3H/LeFHDi5hifw7hbwbs
+dtsSrx56vmEsR9nde2i/ZyDkXWoNifsqkJfWQnKe2KSraS1CxTDzvOS8CAjjK2XD
+TYuD3wjDAr/GCafmId734erKPpSboj1S+0SAceZdnPi4jNBrycXcB2AfCudwse7L
+UhzWlyKy2wIDAQABo4IBtTCCAbEwHwYDVR0jBBgwFoAUSE9a+i9Kml7gUPNre1Wl
+3vW+NF0wHQYDVR0OBBYEFOgRhFYc+6zhi6WLx7+ZPsUr0osVMA4GA1UdDwEB/wQE
+AwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD
+AjBnBgNVHSAEYDBeMFIGDCsGAQQBriMBBAMBATBCMEAGCCsGAQUFBwIBFjRodHRw
+czovL3d3dy5pbmNvbW1vbi5vcmcvY2VydC9yZXBvc2l0b3J5L2Nwc19zc2wucGRm
+MAgGBmeBDAECAjA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLmluY29tbW9u
+Lm9yZy9JbkNvbW1vblNlcnZlckNBLmNybDBvBggrBgEFBQcBAQRjMGEwOQYIKwYB
+BQUHMAKGLWh0dHA6Ly9jZXJ0LmluY29tbW9uLm9yZy9JbkNvbW1vblNlcnZlckNB
+LmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuaW5jb21tb24ub3JnMBkGA1Ud
+EQQSMBCCDmlkcC5zY2lnYXAub3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAdg9Cv2Ora
+un7CAt77dhfGirTUdytoTwb5d7//OzWz6M95vr3e0siRowrKXq5AnQLY8CZ+YE3H
+yDxlvulWM2cMbubPsOLExCI4sNllViPWFNQKDl6s3Cbc7E2q11Hz048OVU4KtmL5
+5jA6/rWRCvoMepDzMF4T72DCeMnFSe3ICq+kBRI+RmOPoWWjIrL8Q9rWfUVLdQbu
+LgKtSfPpm0VfedZLlrJ3R7urdqpnIESzkBFj5rNDaD7Wiwc0LqcpbpGNo9SZ6IiT
+kKYLJCeoyWMAQa5zo5nnRbJ5cu1z/B50uibxbYclRWKEamiTThEYH824G0jaGCXx
+IspTV/Gt1tKM
+-----END CERTIFICATE-----
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/routes.php
----------------------------------------------------------------------
diff --git a/app/routes.php b/app/routes.php
new file mode 100755
index 0000000..a9f6754
--- /dev/null
+++ b/app/routes.php
@@ -0,0 +1,178 @@
+<?php
+
+/*
+|--------------------------------------------------------------------------
+| Application Routes
+|--------------------------------------------------------------------------
+|
+| Here is where you can register all of the routes for an application.
+| It's a breeze. Simply tell Laravel the URIs it should respond to
+| and give it the Closure to execute when that URI is requested.
+|
+*/
+
+
+/*
+ * User Routes
+*/
+
+Route::get("create", "AccountController@createAccountView");
+
+Route::post("create", "AccountController@createAccountSubmit");
+
+Route::get("login", "AccountController@loginView");
+
+Route::post("login", "AccountController@loginSubmit");
+
+Route::get("logout", "AccountController@logout");
+
+Route::get("forgot-password", "AccountController@forgotPassword");
+/*
+ * The following routes will not work without logging in.
+ *
+*/
+
+/*
+ * Project Routes
+*/
+
+Route::get("project/create", "ProjectController@createView");
+
+Route::post("project/create", "ProjectController@createSubmit");
+
+Route::get("project/summary", "ProjectController@summary");
+
+Route::get("project/search", "ProjectController@searchView");
+
+Route::post("project/search", "ProjectController@searchSubmit");
+
+Route::get("project/edit", "ProjectController@editView");
+
+Route::post("project/edit", "ProjectController@editSubmit");
+
+/*
+ * Experiment Routes
+*/
+
+Route::get("experiment/create", "ExperimentController@createView");
+
+Route::post("experiment/create", "ExperimentController@createSubmit");
+
+Route::get("experiment/summary", "ExperimentController@summary");
+
+Route::post("experiment/summary", "ExperimentController@expChange");
+
+Route::get("experiment/search", "ExperimentController@searchView");
+
+Route::post("experiment/search", "ExperimentController@searchSubmit");
+
+Route::get("experiment/edit", "ExperimentController@editView");
+
+Route::post("experiment/edit", "ExperimentController@editSubmit");
+
+/*
+ * Compute Resources Routes
+*/
+
+Route::get("cr/create", function(){
+	return Redirect::to("cr/create/step1");
+});
+
+Route::get("cr/create", "ComputeResource@createView"); 
+
+Route::post("cr/create", "ComputeResource@createSubmit");
+
+Route::get("cr/edit", "ComputeResource@editView"); 
+
+Route::post("cr/edit", "ComputeResource@editSubmit"); 
+
+Route::get("cr/browse", "ComputeResource@browseView");
+
+Route::post("cr/delete-jsi", "ComputeResource@deleteActions");
+
+Route::post("cr/delete-dmi", "ComputeResource@deleteActions");
+
+Route::post("cr/delete-cr", "ComputeResource@deleteActions");
+
+/*
+ * Application Catalog Routes
+*/
+
+Route::get("app/module", "ApplicationController@showAppModuleView");
+
+Route::post("app/module-create", "ApplicationController@modifyAppModuleSubmit");
+
+Route::post("app/module-edit", "ApplicationController@modifyAppModuleSubmit");
+
+Route::post("app/module-delete", "ApplicationController@deleteAppModule");
+
+Route::get("app/interface", "ApplicationController@createAppInterfaceView");
+
+Route::post("app/interface-create", "ApplicationController@createAppInterfaceSubmit");
+
+Route::post("app/interface-edit", "ApplicationController@editAppInterfaceSubmit");
+
+Route::post("app/interface-delete", "ApplicationController@deleteAppInterface");
+
+Route::get("app/deployment", "ApplicationController@createAppDeploymentView");
+
+Route::post("app/deployment-create", "ApplicationController@createAppDeploymentSubmit");
+
+Route::post("app/deployment-edit", "ApplicationController@editAppDeploymentSubmit");
+
+Route::post("app/deployment-delete", "ApplicationController@deleteAppDeployment");
+
+Route::get("gp/create", "GatewayprofileController@createView");
+
+Route::post("gp/create", "GatewayprofileController@createSubmit");
+
+Route::post("gp/edit", "GatewayprofileController@editGP");
+
+Route::get("gp/browse", "GatewayprofileController@browseView");
+
+Route::post("gp/delete-gp", "GatewayprofileController@delete");
+
+Route::post("gp/remove-cr", "GatewayprofileController@delete");
+
+Route::post("gp/add-crp", "GatewayprofileController@modifyCRP");
+
+Route::post("gp/update-crp", "GatewayprofileController@modifyCRP");
+
+//Management Dashboard
+
+Route::get("admin/console", "AdminController@console");
+
+Route::get("admin/dashboard/gateway", "AdminController@dashboard");
+Route::get("admin/dashboard", "AdminController@dashboard");
+
+Route::get("admin/dashboard/users", "AdminController@usersView");
+
+Route::get("admin/dashboard/roles", "AdminController@rolesView");
+
+Route::get("manage/users", "AdminController@usersView");
+
+Route::post("admin/adduser", "AdminController@addAdminSubmit");
+
+Route::post("admin/addgatewayadmin", "AdminController@addGatewayAdminSubmit");
+
+Route::post("admin/addrole", "AdminController@addRole");
+
+//Airavata Server Check
+Route::get("airavata/down", function(){
+	return View::make("server-down");
+});
+/*
+ * Test Routes.
+*/
+
+Route::get("testjob", function(){
+	//print_r( Session::all());
+});
+
+
+/*
+ * Following base Routes need to be at the bottom.
+*/
+Route::controller("home", "HomeController");
+
+Route::controller("/", "HomeController");

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/start/artisan.php
----------------------------------------------------------------------
diff --git a/app/start/artisan.php b/app/start/artisan.php
new file mode 100755
index 0000000..1df850b
--- /dev/null
+++ b/app/start/artisan.php
@@ -0,0 +1,13 @@
+<?php
+
+/*
+|--------------------------------------------------------------------------
+| Register The Artisan Commands
+|--------------------------------------------------------------------------
+|
+| Each available Artisan command must be registered with the console so
+| that it is available to be called. We'll register every command so
+| the console gets access to each of the command object instances.
+|
+*/
+

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/start/global.php
----------------------------------------------------------------------
diff --git a/app/start/global.php b/app/start/global.php
new file mode 100755
index 0000000..cddbe4d
--- /dev/null
+++ b/app/start/global.php
@@ -0,0 +1,82 @@
+<?php
+
+/*
+|--------------------------------------------------------------------------
+| Register The Laravel Class Loader
+|--------------------------------------------------------------------------
+|
+| In addition to using Composer, you may use the Laravel class loader to
+| load your controllers and models. This is useful for keeping all of
+| your classes in the "global" namespace without Composer updating.
+|
+*/
+
+ClassLoader::addDirectories(array(
+
+	app_path().'/commands',
+	app_path().'/controllers',
+	app_path().'/models',
+	app_path().'/database/seeds',
+	app_path().'/libraires',
+
+));
+
+/*
+|--------------------------------------------------------------------------
+| Application Error Logger
+|--------------------------------------------------------------------------
+|
+| Here we will configure the error logger setup for the application which
+| is built on top of the wonderful Monolog library. By default we will
+| build a basic log file setup which creates a single file for logs.
+|
+*/
+
+Log::useFiles(storage_path().'/logs/laravel.log');
+
+/*
+|--------------------------------------------------------------------------
+| Application Error Handler
+|--------------------------------------------------------------------------
+|
+| Here you may handle any errors that occur in your application, including
+| logging them or displaying custom views for specific errors. You may
+| even register several error handlers to handle different types of
+| exceptions. If nothing is returned, the default error view is
+| shown, which includes a detailed stack trace during debug.
+|
+*/
+
+App::error(function(Exception $exception, $code)
+{
+	Log::error($exception);
+});
+
+/*
+|--------------------------------------------------------------------------
+| Maintenance Mode Handler
+|--------------------------------------------------------------------------
+|
+| The "down" Artisan command gives you the ability to put an application
+| into maintenance mode. Here, you will define what is displayed back
+| to the user if maintenance mode is in effect for the application.
+|
+*/
+
+App::down(function()
+{
+	return Response::make("Be right back!", 503);
+});
+
+/*
+|--------------------------------------------------------------------------
+| Require The Filters File
+|--------------------------------------------------------------------------
+|
+| Next we will load the filters file for the application. This gives us
+| a nice separate location to store our route and application filter
+| definitions instead of putting them all in the main routes file.
+|
+*/
+
+require app_path().'/filters.php';

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/start/local.php
----------------------------------------------------------------------
diff --git a/app/start/local.php b/app/start/local.php
new file mode 100755
index 0000000..3d14850
--- /dev/null
+++ b/app/start/local.php
@@ -0,0 +1,3 @@
+<?php
+
+//
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/tests/ExampleTest.php
----------------------------------------------------------------------
diff --git a/app/tests/ExampleTest.php b/app/tests/ExampleTest.php
new file mode 100755
index 0000000..62387de
--- /dev/null
+++ b/app/tests/ExampleTest.php
@@ -0,0 +1,17 @@
+<?php
+
+class ExampleTest extends TestCase {
+
+	/**
+	 * A basic functional test example.
+	 *
+	 * @return void
+	 */
+	public function testBasicExample()
+	{
+		$crawler = $this->client->request('GET', '/');
+
+		$this->assertTrue($this->client->getResponse()->isOk());
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/tests/TestCase.php
----------------------------------------------------------------------
diff --git a/app/tests/TestCase.php b/app/tests/TestCase.php
new file mode 100755
index 0000000..d367fe5
--- /dev/null
+++ b/app/tests/TestCase.php
@@ -0,0 +1,19 @@
+<?php
+
+class TestCase extends Illuminate\Foundation\Testing\TestCase {
+
+	/**
+	 * Creates the application.
+	 *
+	 * @return \Symfony\Component\HttpKernel\HttpKernelInterface
+	 */
+	public function createApplication()
+	{
+		$unitTesting = true;
+
+		$testEnvironment = 'testing';
+
+		return require __DIR__.'/../../bootstrap/start.php';
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/views/account/create.blade.php
----------------------------------------------------------------------
diff --git a/app/views/account/create.blade.php b/app/views/account/create.blade.php
new file mode 100755
index 0000000..9feb720
--- /dev/null
+++ b/app/views/account/create.blade.php
@@ -0,0 +1,121 @@
+@extends('layout.basic')
+
+@section('page-header')
+    @parent
+@stop
+
+@section('content')
+
+<div class="col-md-offset-4 col-md-4">
+    <div class="page-header">
+        <h3>Create New Account
+            <small>
+                <small> (Already registered? <a href="login">Log in</a>)</small>
+            </small>
+        </h3>
+    </div>
+    @if ($errors->has())
+        
+            @foreach ($errors->all() as $error)
+                {{ Utilities::print_error_message($error) }}        
+            @endforeach
+        
+        @endif
+
+    <form action="create" method="post" role="form">
+        
+    @if( Session::has('username_exists'))
+            {{ Utilities::print_error_message('The username you entered is already in use. Please select another.') }}
+    @endif
+    <?php
+    Session::forget("username_exists");
+    ?>
+        <div class="form-group required"><label class="control-label">Username</label>
+
+            <div><input class="form-control" id="username" minlength="6" maxlength="30" name="username"
+                        placeholder="Username" required="required" type="text"  value="{{Input::old('username') }}"/></div>
+        </div>
+        <div class="form-group required"><label class="control-label">Password</label>
+
+            <div><input class="form-control" id="password" minlength="6" name="password" placeholder="Password"
+                        required="required" title="" type="password"/></div>
+        </div>
+        <div class="form-group required"><label class="control-label">Password (again)</label>
+
+            <div><input class="form-control" id="confirm_password" name="confirm_password"
+                        placeholder="Password (again)" required="required" title="" type="password"/>
+            </div>
+        </div>
+        <div class="form-group required"><label class="control-label">E-mail</label>
+
+            <div><input class="form-control" id="email" name="email" placeholder="E-mail"
+                        required="required" title="" type="email"   value="{{Input::old('email') }}"/></div>
+        </div>
+        <div class="form-group required"><label class="control-label">First Name</label>
+
+            <div><input class="form-control" id="first_name" maxlength="30" name="first_name"
+                        placeholder="First Name" required="required" title="" type="text"   value="{{Input::old('first_name') }}"/></div>
+        </div>
+        <div class="form-group required"><label class="control-label">Last Name</label>
+
+            <div><input class="form-control" id="last_name" maxlength="30" name="last_name"
+                        placeholder="Last Name" required="required" title="" type="text"   value="{{Input::old('last_name') }}"/></div>
+        </div>
+        <div class="form-group"><label class="control-label">Organization</label>
+
+            <div><input class="form-control" id="organization" name="organization"
+                        placeholder="Organization" title="" type="text"   value="{{Input::old('organization') }}"/>
+            </div>
+        </div>
+        <div class="form-group"><label class="control-label">Address</label>
+
+            <div><input class="form-control" id="address" name="address"
+                        placeholder="Address" title="" type="text"   value="{{Input::old('address') }}"/>
+            </div>
+        </div>
+        <div class="form-group"><label class="control-label">Country</label>
+
+            <div><input class="form-control" id="country" name="country"
+                        placeholder="Country" title="" type="text"   value="{{Input::old('country') }}"/>
+            </div>
+        </div>
+        <div class="form-group"><label class="control-label">Telephone</label>
+
+            <div><input class="form-control" id="telephone" name="telephone"
+                        placeholder="Telephone" title="" type="tel"   value="{{Input::old('telephone') }}"/>
+            </div>
+        </div>
+        <div class="form-group"><label class="control-label">Mobile</label>
+
+            <div><input class="form-control" id="mobile" name="mobile"
+                        placeholder="Mobile" title="" type="tel"   value="{{Input::old('mobile') }}"/>
+            </div>
+        </div>
+        <div class="form-group"><label class="control-label">IM</label>
+
+            <div><input class="form-control" id="im" name="im"
+                        placeholder="IM" title="" type="text"   value="{{Input::old('im') }}"/>
+            </div>
+        </div>
+        <div class="form-group"><label class="control-label">URL</label>
+
+            <div><input class="form-control" id="url" name="url"
+                        placeholder="URL" title="" type="text"   value="{{Input::old('url') }}"/>
+            </div>
+        </div>
+        <br/>
+        <input name="Submit" type="submit" class="btn btn-primary btn-block" value="Create">
+    </form>
+
+    <style media="screen" type="text/css">
+        .form-group.required .control-label:after {
+            content: " *";
+            color: red;
+        }
+    </style>
+    <br/><br/><br/>
+</div>
+</body>
+
+@stop
+

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/views/account/forgot-password.blade.php
----------------------------------------------------------------------
diff --git a/app/views/account/forgot-password.blade.php b/app/views/account/forgot-password.blade.php
new file mode 100644
index 0000000..b9c8274
--- /dev/null
+++ b/app/views/account/forgot-password.blade.php
@@ -0,0 +1,18 @@
+@extends('layout.basic')
+
+@section('page-header')
+    @parent
+@stop
+
+@section('content')
+
+<div class="col-md-offset-3 col-md-6">
+
+<h3> Did you forget the password to your account? </h3>
+<h4> Please enter your email id, you registered with.</h4>
+<div class="form-group form-horizontal">
+	<div class="col-md-8"><input type="email" value="" class="form-control" placeholder="email"/></div>
+	<div class="col-md-2"><input type="submit" class="form-control btn btn-primary"value="Submit"/></div>
+</div>
+
+@stop
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/views/account/login.blade.php
----------------------------------------------------------------------
diff --git a/app/views/account/login.blade.php b/app/views/account/login.blade.php
new file mode 100755
index 0000000..0e13cd0
--- /dev/null
+++ b/app/views/account/login.blade.php
@@ -0,0 +1,44 @@
+@extends('layout.basic')
+
+@section('page-header')
+    @parent
+@stop
+
+@section('content')
+
+    <div class="col-md-offset-4 col-md-4">
+
+        <h3>
+            Login
+            <small>
+                <small> (Not registered? <a href="create">Create account</a>)</small>
+            </small>
+        </h3>
+
+        
+
+        <form action="login" method="post" role="form">
+            @if( Session::has("invalid-credentials") )
+                {{ Utilities::print_error_message('Invalid username or password. Please try again.') }}
+            @endif
+            <?php
+            Session::forget( "invalid-credentials");
+            ?>
+
+            <div class="form-group">
+                <label class="sr-only" for="username">Username</label>
+                <input type="text" class="form-control" name="username" placeholder="Username" autofocus required>
+            </div>
+            <div class="form-group">
+                <label class="sr-only" for="password">Password</label>
+                <input type="password" class="form-control" name="password" placeholder="Password" required>
+            </div>
+            <input name="Submit" type="submit" class="btn btn-primary btn-block" value="Sign in">
+        </form>
+
+            <small>
+                <small> (Forgot Password? Click <a href="{{URL::to('/') }}/forgot-password">here</a>)</small>
+            </small>
+    </div>
+
+@stop
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/views/admin/dashboard.blade.php
----------------------------------------------------------------------
diff --git a/app/views/admin/dashboard.blade.php b/app/views/admin/dashboard.blade.php
new file mode 100644
index 0000000..0fd2ffc
--- /dev/null
+++ b/app/views/admin/dashboard.blade.php
@@ -0,0 +1,115 @@
+@extends('layout.basic')
+
+@section('page-header')
+    @parent
+@stop
+
+@section('content')
+<div class="container">
+    <div class="col-md-12">
+        @if( Session::has("message"))
+            <div class="row">
+                <div class="alert alert-success alert-dismissible" role="alert">
+                    <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
+                    {{ Session::get("message") }}
+                </div>
+            </div>
+            {{ Session::forget("message") }}
+        @endif
+
+        <div class="row text-center">
+            <h1>Admin Console</h1>
+        </div>
+        <div class="row text-center admin-options">
+
+        <div class="row">
+            <a href="{{URL::to('/')}}/manage/users">
+                <div class="col-md-3 well">
+                    <div class="col-md-12">
+                        <span class="glyphicon glyphicon-user"></span>
+                    </div>
+                    <div class="col-md-12">
+                        Users
+                    </div>
+                </div>
+            </a>
+
+            <a href="{{URL::to('/')}}/admin/dashboard">
+                <div class=" col-md-offset-1 col-md-3 well">
+                    <div class="col-md-12">
+                        <span class="glyphicon glyphicon-eye-open"></span>
+                    </div>
+                    <div class="col-md-12">
+                        Admins
+                    </div>
+                </div>
+            </a>
+
+            <a href="{{URL::to('/')}}/cr/browse">
+                <div class=" col-md-offset-1 col-md-3 well">
+                    <div class="col-md-12">
+                        <span class="glyphicon glyphicon-briefcase"></span>
+                    </div>
+                    <div class="col-md-12">
+                        Resources
+                    </div>
+                </div>
+            </a>
+        </div>
+
+        <div class="row">
+            <div class="col-md-3 well">
+                <div class="col-md-12">
+                    <span class="glyphicon glyphicon-tasks"></span>
+                </div>
+                <div class="col-md-12">
+                    Application Catalog
+                </div>
+                <select  onchange="location = this.options[this.selectedIndex].value;">
+                    <option>-- Select --</option>
+                    <option value="{{URL::to('/')}}/app/interface">Interface</option>
+                    <option value="{{URL::to('/')}}/app/module">Module</option>
+                    <option value="{{URL::to('/')}}/app/deployment">Deployment</option>
+                </select>
+            </div>
+
+                <div class=" col-md-offset-1 col-md-3 well">
+                    <div class="col-md-12">
+                        <span class="glyphicon glyphicon-sort"></span>
+                    </div>
+                    <div class="col-md-12">
+                        Gateways
+                    </div>
+                    <select  onchange="location = this.options[this.selectedIndex].value;">
+                        <option>-- Select --</option>
+                        <option value="{{URL::to('/')}}/gp/create">Create</option>
+                        <option value="{{URL::to('/')}}/gp/browse">Browse</option>
+                    </select>
+                </div>
+
+                <div class=" col-md-offset-1 col-md-3 well">
+                    <div class="col-md-12">
+                        <span class="glyphicon glyphicon-list-alt"></span>
+                    </div>
+                    <div class="col-md-12">
+                        Reports
+                    </div>
+                </div>
+            </div>
+
+            <div class="row">
+                <div class="col-md-3 well">
+                    <div class="col-md-12">
+                        <span class="glyphicon glyphicon-question-sign"></span>
+                    </div>
+                    <div class="col-md-12">
+                        Support
+                    </div>
+                </div>
+            </div>
+
+        </div>
+    </div>
+</div>
+
+@stop
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/views/admin/manage-admin.blade.php
----------------------------------------------------------------------
diff --git a/app/views/admin/manage-admin.blade.php b/app/views/admin/manage-admin.blade.php
new file mode 100644
index 0000000..35fbaee
--- /dev/null
+++ b/app/views/admin/manage-admin.blade.php
@@ -0,0 +1,196 @@
+@extends('layout.basic')
+
+@section('page-header')
+    @parent
+@stop
+
+@section('content')
+<div class="container">
+    <div class="col-md-12">
+        @if( Session::has("message"))
+            <div class="row">
+                <div class="alert alert-success alert-dismissible" role="alert">
+                    <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
+                    {{ Session::get("message") }}
+                </div>
+            </div>
+            {{ Session::forget("message") }}
+        @endif
+        <div class="panel-group" id="accordion">
+
+        <!-- Super Admin Users have access to Scigap Administration -->
+          <div class="panel panel-default">
+            <div class="panel-heading">
+              <h4 class="panel-title">
+                <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
+                  Scigap Administration
+                </a>
+              </h4>
+            </div>
+            <div id="collapseOne" class="panel-collapse collapse in">
+                <div class="panel-body">
+                    <h1>Add a User to Admin</h1>
+                    <form action="{{URL::to('/')}}/admin/adduser" method="POST" role="form" enctype="multipart/form-data">
+
+                        <div class="form-group required">
+                            <label for="experiment-name" class="control-label">Enter Username</label>
+                            <input type="text" class="form-control" name="username" id="experiment-name" placeholder="username" autofocus required="required">
+                        </div>
+                        <div class="btn-toolbar">
+                            <input name="add" type="submit" class="btn btn-primary" value="Add User">
+                        </div>   
+                    </form>
+                </div>
+            </div>
+          </div>
+        <!-- Scigap Administration Ends -->
+
+        <!-- Gateway Administration can be accessed by Super Admins and Gateway Admins can access their particular gateway -->
+        <div class="panel panel-default">
+            <div class="panel-heading">
+              <h4 class="panel-title">
+                <a data-toggle="collapse" data-parent="#accordion" href="#collapseThree">
+                    Gateways Administration
+                </a>
+              </h4>
+            </div>
+            <div id="collapseThree" class="panel-collapse collapse">
+                <div class="panel-body">
+                    <div class="row">
+
+                        <div class="col-md-6">
+                            <h3>Existing Gateway Resource Profiles :</h3>
+                        </div>
+                        <div class="col-md-6" style="margin-top:3.5%">
+                            <input type="text" class="col-md-12 filterinput" placeholder="Search by Gateway Name" />
+                        </div>
+                    </div>
+                    <div class="panel-group" id="accordion2">
+                    @foreach( $gatewayProfiles as $indexGP => $gp )
+                        <div class="panel panel-default">
+                            <div class="panel-heading">
+                                <h4 class="panel-title">
+                                    <a class="accordion-toggle collapsed gateway-name" data-toggle="collapse" data-parent="#accordion2" href="#collapse-gateway-{{$indexGP}}">
+                                    {{ $gp->gatewayName }}
+                                    </a>
+                                    <div class="pull-right col-md-2 gateway-options fade">
+                                        <span class="glyphicon glyphicon-pencil edit-gateway" style="cursor:pointer;" data-toggle="modal" data-target="#edit-gateway-block" data-gp-id="{{ $gp->gatewayID }}" data-gp-name="{{ $gp->gatewayName }}" data-gp-desc="{{ $gp->gatewayDescription }}"></span>
+                                        <span class="glyphicon glyphicon-trash delete-gateway" style="cursor:pointer;" data-toggle="modal" data-target="#delete-gateway-block" data-gp-name="{{$gp->gatewayName}}" data-gp-id="{{ $gp->gatewayID }}"></span>
+                                    </div>
+                                </h4>
+                            </div>
+                            <div id="collapse-gateway-{{$indexGP}}" class="panel-collapse collapse">
+                                <div class="panel-body">
+                                    <div class="app-interface-block">
+                                        <h5>{{ $gp->gatewayDescription}}</h5>
+                                        <hr/>
+                                        <div class="row">
+                                            <div class="col-md-10">
+                                                <h4><span class="glyphicon glyphicon-plus"></span> Add a user as Admin to this Gateway</h4>
+                                                <form action="{{URL::to('/')}}/admin/addgatewayadmin" method="POST" role="form" enctype="multipart/form-data">
+                                                    <div class="form-group required">
+                                                        <label for="experiment-name" class="control-label">Enter Username</label>
+                                                        <input type="text" class="form-control" name="username" id="experiment-name" placeholder="username" autofocus required="required">
+                                                        <input type="hidden" name="gateway_name" value="{{ $gp->gatewayName }}"/>
+                                                    </div>
+                                                    <div class="btn-toolbar">
+                                                        <input name="add" type="submit" class="btn btn-primary" value="Add Admin"/>
+                                                    </div>   
+                                                </form>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    @endforeach
+                    </div>
+                </div>
+            </div>
+          </div>
+
+        <!-- Super Admin Users have access to Role Administration -->
+          <div class="panel panel-default">
+            <div class="panel-heading">
+              <h4 class="panel-title">
+                <a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
+                  Role Adminstration
+                </a>
+              </h4>
+            </div>
+            <div id="collapseTwo" class="panel-collapse collapse">
+                <div class="panel-body">
+                    <h1>Existing Roles</h1>
+                    <table class="table table-condensed">
+                    @foreach( $roles as $role)
+                        <tr>
+                            <td>{{ $role }}</td>
+                            @if( $role != "admin")
+                                <td><a href=""><span class="glyphicon glyphicon-pencil"></span></a></td>
+                                <td><span class="glyphicon glyphicon-remove"></span></td>
+                            @endif
+                        </tr>
+                    @endforeach
+                    </table>
+                    <h1>Add a new Role</h1>
+                    <form id="role-form" action="{{URL::to('/')}}/admin/addrole" method="POST" role="form" enctype="multipart/form-data">
+                        <div class="form-group form-horizontal required col-md-2">
+                            <label for="experiment-name" class="control-label">Enter Role</label>
+                        </div>
+                        <div class="form-group form-horizontal required col-md-4">
+                            <input type="text" class="form-control input-small role-name" name="role" placeholder="username" autofocus required="required">
+                        </div>
+                        <div class="form-group form-horizontal col-md-4">
+                            <input name="add" type="submit" class="btn btn-primary add-role" value="Add">
+                        </div>   
+                    </form>
+                    <input type="hidden" id="roles" value="{{ htmlentities( json_encode( $roles) ) }}"/>
+                </div>
+            </div>
+          </div>
+          <!-- Role Administration complete -->
+
+          <!-- Admins will have access to their settings -->
+          <div class="panel panel-default">
+            <div class="panel-heading">
+              <h4 class="panel-title">
+                <a data-toggle="collapse" data-parent="#accordion" href="#collapseThree">
+                    Settings
+                </a>
+              </h4>
+            </div>
+            <div id="collapseThree" class="panel-collapse collapse">
+                <div class="panel-body">
+                    some settngs should come here.
+                </div>
+            </div>
+          </div>
+          <!--Settings complete -->
+
+        </div>
+    </div>
+</div>
+
+@stop
+
+
+@section('scripts')
+    @parent
+    <script>
+    // Checking if role already exists.
+    $(".add-role").click( function( e){
+        e.preventDefault();
+        var roles = $.parseJSON( $("#roles").val() );
+        if( $.inArray( $.trim( $(".role-name").val() ), roles ) != -1 )
+        {
+            console.log( $(this).parent().find(".alert").length );
+            if( ! $(this).parent().parent().find(".alert").length )
+            {
+                $(this).parent().after("<div class='col-md-12 alert alert-danger'>This role already exists. Please pick another role.</span>");
+            }
+        }
+        else
+            $("#role-form").submit();
+    })
+    </script>
+@stop
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/views/admin/manage-admin1.blade.php
----------------------------------------------------------------------
diff --git a/app/views/admin/manage-admin1.blade.php b/app/views/admin/manage-admin1.blade.php
new file mode 100644
index 0000000..8667cf2
--- /dev/null
+++ b/app/views/admin/manage-admin1.blade.php
@@ -0,0 +1,109 @@
+@extends('layout.basic')
+
+@section('page-header')
+    @parent
+    {{ HTML::style('css/admin.css')}}
+@stop
+
+@section('content')
+
+    <div id="wrapper">
+            <!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
+            @include( 'partials/dashboard-block')
+        <div id="page-wrapper">
+
+            <div class="container-fluid">
+
+                    <div class="row">
+
+                        <div class="col-md-6">
+                            <h3>Existing Gateway Resource Profiles :</h3>
+                        </div>
+                        <div class="col-md-6" style="margin-top:3.5%">
+                            <input type="text" class="col-md-12 filterinput" placeholder="Search by Gateway Name" />
+                        </div>
+                    </div>
+                    <div class="panel-group" id="accordion2">
+                    @foreach( $gateways as $indexGP => $gp )
+                        <div class="panel panel-default">
+                            <div class="panel-heading">
+                                <h4 class="panel-title">
+                                    <a class="accordion-toggle collapsed gateway-name" data-toggle="collapse" data-parent="#accordion2" href="#collapse-gateway-{{$indexGP}}">
+                                    {{ $gp->gatewayName }}
+                                    </a>
+                                    <div class="pull-right col-md-2 gateway-options fade">
+                                        <span class="glyphicon glyphicon-pencil edit-gateway" style="cursor:pointer;" data-toggle="modal" data-target="#edit-gateway-block" data-gp-id="{{ $gp->gatewayId }}" data-gp-name="{{ $gp->gatewayName }}"></span>
+                                        <span class="glyphicon glyphicon-trash delete-gateway" style="cursor:pointer;" data-toggle="modal" data-target="#delete-gateway-block" data-gp-name="{{$gp->gatewayName}}" data-gp-id="{{ $gp->gatewayId }}"></span>
+                                    </div>
+                                </h4>
+                            </div>
+                            <div id="collapse-gateway-{{$indexGP}}" class="panel-collapse collapse">
+                                <div class="panel-body">
+                                    <div class="app-interface-block">
+                                        <div class="row">
+                                            <div class="col-md-10">
+                                                <h4><span class="glyphicon glyphicon-plus"></span> Add a user as Admin to this Gateway</h4>
+                                                <form action="{{URL::to('/')}}/admin/addgatewayadmin" method="POST" role="form" enctype="multipart/form-data">
+                                                    <div class="form-group required">
+                                                        <label for="experiment-name" class="control-label">Enter Username</label>
+                                                        <input type="text" class="form-control" name="username" id="experiment-name" placeholder="username" autofocus required="required">
+                                                        <input type="hidden" name="gateway_name" value="{{ $gp->gatewayName }}"/>
+                                                    </div>
+                                                    <div class="btn-toolbar">
+                                                        <input name="add" type="submit" class="btn btn-primary" value="Add Admin"/>
+                                                    </div>   
+                                                </form>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    @endforeach
+                    </div>
+                <div class="col-md-12">
+                    <button type="button" class="btn btn-default toggle-add-tenant"><span class="glyphicon glyphicon-plus"></span>Add a new gateway</button>
+                </div>
+                <div class="add-tenant col-md-6">
+                    <div class="form-group">
+                        <label>Enter Domain Name</label>
+                        <input type="text" class="form-control"/>
+                    </div>
+                    <div class="form-group">
+                        <label>Enter Admin Username</label>
+                        <input type="text" class="form-control"/>
+                    </div>
+                    <div class="form-group">
+                        <label>Enter Admin Password</label>
+                        <input type="text" class="form-control"/>
+                    </div>
+                    <div class="form-group">
+                        <label>Re-enter Admin Password</label>
+                        <input type="text" class="form-control"/>
+                    </div>
+                    <div class="form-group">
+                        <input type="submit" class="form-control btn btn-primary" value="Register" />
+                    </div>
+                </div>
+
+            </div>
+            <!-- /.container-fluid -->
+
+        </div>
+        <!-- /#page-wrapper -->
+
+    </div>
+
+@stop
+
+
+@section('scripts')
+    @parent
+    <script>
+        $(".add-tenant").slideUp();
+        
+        $(".toggle-add-tenant").click( function(){
+            $(".add-tenant").slideDown();
+        });
+    </script>
+@stop
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/views/admin/manage-roles.blade.php
----------------------------------------------------------------------
diff --git a/app/views/admin/manage-roles.blade.php b/app/views/admin/manage-roles.blade.php
new file mode 100644
index 0000000..8104bd7
--- /dev/null
+++ b/app/views/admin/manage-roles.blade.php
@@ -0,0 +1,50 @@
+@extends('layout.basic')
+
+@section('page-header')
+    @parent
+    {{ HTML::style('css/admin.css')}}
+@stop
+
+@section('content')
+
+    <div id="wrapper">
+            <!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
+            @include( 'partials/dashboard-block')
+        <div id="page-wrapper">
+
+            <div class="container-fluid">
+                <div class="col-md-12">
+                    @if( Session::has("message"))
+                        <div class="row">
+                            <div class="alert alert-success alert-dismissible" role="alert">
+                                <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
+                                {{ Session::get("message") }}
+                            </div>
+                        </div>
+                        {{ Session::forget("message") }}
+                    @endif
+
+                    <h1 class="text-center">Roles</h1>
+
+                    <table class="table table-striped table-condensed">
+                        <tr>
+                            <th>Role</th>
+                            <th>Actions</th>
+                        </tr>
+                        @foreach( $roles as $role)
+                        <tr>
+                            <td>{{ $role }}</td>
+                            <td>
+                                <span class="glyphicon glyphicon-pencil"></span>
+                                <span class="glyphicon glyphicon-remove"></span>
+                            </td>
+                        </tr>
+                        @endforeach
+                    </table>
+
+                </div>
+            </div>
+        </div>
+    </div>
+
+@stop
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/views/admin/manage-users.blade.php
----------------------------------------------------------------------
diff --git a/app/views/admin/manage-users.blade.php b/app/views/admin/manage-users.blade.php
new file mode 100644
index 0000000..2132281
--- /dev/null
+++ b/app/views/admin/manage-users.blade.php
@@ -0,0 +1,47 @@
+@extends('layout.basic')
+
+@section('page-header')
+    @parent
+    {{ HTML::style('css/admin.css')}}
+@stop
+
+@section('content')
+
+    <div id="wrapper">
+            <!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
+            @include( 'partials/dashboard-block')
+        <div id="page-wrapper">
+
+            <div class="container-fluid">
+                <div class="col-md-12">
+                    @if( Session::has("message"))
+                        <div class="row">
+                            <div class="alert alert-success alert-dismissible" role="alert">
+                                <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
+                                {{ Session::get("message") }}
+                            </div>
+                        </div>
+                        {{ Session::forget("message") }}
+                    @endif
+
+                    <h1 class="text-center">Users</h1>
+
+                    <table class="table table-striped table-condensed">
+                        <tr>
+                            <th>Username</th>
+                            <th>Role</th>
+                        </tr>
+                        @foreach( $users as $user)
+                        <tr>
+                            <td>{{ $user }}</td>
+                            <td><button class="button btn btn-default" type="button">Check Role</button></td>
+                        </tr>
+                        @endforeach
+                    </table>
+
+                </div>
+            </div>
+        </div>
+    </div>
+
+@stop
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/views/application/deployment.blade.php
----------------------------------------------------------------------
diff --git a/app/views/application/deployment.blade.php b/app/views/application/deployment.blade.php
new file mode 100644
index 0000000..2cad93b
--- /dev/null
+++ b/app/views/application/deployment.blade.php
@@ -0,0 +1,180 @@
+@extends('layout.basic')
+
+@section('page-header')
+    @parent
+    {{ HTML::style('css/style.css') }}
+@stop
+
+@section('content')
+
+<div class="container">
+	<div class="col-md-offset-2 col-md-8">
+		
+		<div class="row">
+			<button class="btn btn-default create-app-deployment">Create a new Application Deployment</button>
+		</div>
+		@if( count( $appDeployments) )
+			@if( Session::has("message"))
+				<div class="row">
+					<div class="alert alert-success alert-dismissible" role="alert">
+						<button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
+						{{ Session::get("message") }}
+					</div>
+				</div>
+				{{ Session::forget("message") }}
+			@endif
+
+			<div class="row">
+				<div class="col-md-6">
+					<h3>Existing Application Deployments :</h3>
+				</div>
+				<div class="col-md-6" style="margin-top:3.5%">
+					<input type="text" class="col-md-12 filterinput" placeholder="Search by Deployment Id Name" />
+				</div>
+			</div>
+			<div class="panel-group" id="accordion">
+			@foreach( $appDeployments as $index => $deployment )
+				<div class="panel panel-default">
+					<div class="panel-heading">
+						<h4 class="panel-title">
+							<a class="accordion-toggle collapsed deployment-id" data-toggle="collapse" data-parent="#accordion" href="#collapse-{{$index}}">
+							{{ $deployment->appDeploymentId }}
+							</a>
+							<div class="pull-right col-md-2 deployment-options fade">
+								<span class="glyphicon glyphicon-pencil edit-app-deployment" style="cursor:pointer;" data-toggle="modal" data-target="#edit-app-deployment-block" data-deployment-id="{{ $deployment->appDeploymentId }}"></span>
+								<span class="glyphicon glyphicon-trash delete-app-deployment" style="cursor:pointer;" data-toggle="modal" data-target="#delete-app-deployment-block" data-deployment-id="{{ $deployment->appDeploymentId }}"></span>
+							</div>
+						</h4>
+					</div>
+					<div id="collapse-{{$index}}" class="panel-collapse collapse">
+						<div class="panel-body">
+							<div class="app-deployment-block">
+								@include('partials/deployment-block', array( 'deploymentObject' => $deployment, 'computeResources' => $computeResources, 'modules' => $modules) )
+							</div>
+						</div>
+					</div>
+				</div>
+			@endforeach
+			</div>
+		@endif
+
+		<div class="load-cmd-ui hide">
+			<input name="moduleLoadCmds[]" type="text" class="form-control" placeholder="Module Load Command"/>
+		</div>
+
+		<div class="lib-prepend-path-ui hide">
+			<div class="col-md-12 well">
+				<input name="libraryPrependPathName[]" type="text" class="col-md-4" placeholder="Name"/>
+				<input name="libraryPrependPathValue[]" type="text" class="col-md-8" placeholder="Value"/>
+			</div>
+		</div>
+
+		<div class="lib-append-path-ui hide">
+			<div class="col-md-12 well">
+				<input name="libraryAppendPathName[]" type="text" class="col-md-4" placeholder="Name"/>
+				<input name="libraryAppendPathValue[]" type="text" class="col-md-8" placeholder="Value"/>
+			</div>
+		</div>
+
+		<div class="environment-ui hide">
+			<div class="col-md-12 well">
+				<input name="environmentName[]" type="text" class="col-md-4" placeholder="Name"/>
+				<input name="environmentValue[]" type="text" class="col-md-8" placeholder="Value"/>
+			</div>
+		</div>
+
+		<div class="pre-job-command-ui hide">
+			<div class="col-md-12 well">
+				<input name="preJobCommand[]" type="text" class="col-md-12" placeholder="Pre Job Command"/>
+			</div>
+		</div>
+
+		<div class="post-job-command-ui hide">
+			<div class="col-md-12 well">
+				<input name="postJobCommand[]" type="text" class="col-md-12" placeholder="Post Job Command"/>
+			</div>
+		</div>
+
+		<div class="modal fade" id="edit-app-deployment-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+		    <div class="modal-dialog">
+				<form action="{{URL::to('/')}}/app/deployment-edit" method="POST">	
+		        <div class="modal-content">
+			    	<div class="modal-header">
+			    		<h3 class="text-center">Edit Application Deployment</h3>
+			    	</div>
+			    	<div class="modal-body row">
+						<div class="app-deployment-form-content col-md-12">
+						</div>
+					</div>
+					<div class="modal-footer">
+			        	<div class="form-group">
+							<input type="submit" class="btn btn-primary" value="Update"/>
+							<input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+						</div>
+			        </div>	
+		        </div>
+		        </form>
+		    </div>
+		</div>
+
+		<div class="modal fade" id="create-app-deployment-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+		    <div class="modal-dialog">
+				<form action="{{URL::to('/')}}/app/deployment-create" method="POST">	
+		        <div class="modal-content">
+			    	<div class="modal-header">
+			    		<h3 class="text-center">Create Application Deployment</h3>
+			    	</div>
+			    	<div class="modal-body row">
+						<div class="col-md-12">
+							<div class="create-app-deployment-block">
+								@include('partials/deployment-block', array( 'computeResources' => $computeResources, 'modules' => $modules) )
+							</div>
+						</div>
+					</div>
+					<div class="modal-footer">
+			        	<div class="form-group">
+							<input type="submit" class="btn btn-primary" value="Create"/>
+							<input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+						</div>
+			        </div>	
+		        </div>
+		        </form>
+		    </div>
+		</div>
+
+		<div class="modal fade" id="delete-app-deployment-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+		    <div class="modal-dialog">
+
+				<form action="{{URL::to('/')}}/app/deployment-delete" method="POST">
+			        <div class="modal-content">
+			            <div class="modal-header">
+			              	<h3 class="text-center">Delete Confirmation Application Deployment</h3>
+			            </div>
+			            <div class="modal-body">
+							<input type="hidden" class="form-control delete-deploymentId" name="appDeploymentId"/>
+					 		Do you really want to delete the Application Deployment - <span class="delete-deployment-id"></span>
+						</div>
+						<div class="modal-footer">
+							<div class="form-group">
+								<input type="submit" class="btn btn-danger" value="Delete"/>
+								<input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+							</div>
+						</div>
+					</div>
+
+				</form>
+
+
+			</div>
+		</div>
+
+	</div>
+
+</div>
+
+@stop
+
+@section('scripts')
+	@parent
+    {{ HTML::script('js/deployment.js') }}
+@stop
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/views/application/interface.blade.php
----------------------------------------------------------------------
diff --git a/app/views/application/interface.blade.php b/app/views/application/interface.blade.php
new file mode 100644
index 0000000..1057099
--- /dev/null
+++ b/app/views/application/interface.blade.php
@@ -0,0 +1,165 @@
+@extends('layout.basic')
+
+@section('page-header')
+    @parent
+    {{ HTML::style('css/style.css') }}
+@stop
+
+@section('content')
+
+<div class="container">
+	<div class="col-md-offset-2 col-md-8">
+		
+		<div class="row">
+			<button class="btn btn-default create-app-interface">Create a new Application Interface</button>
+		</div>
+		@if( count( $appInterfaces) )
+			@if( Session::has("message"))
+				<div class="row">
+					<div class="alert alert-success alert-dismissible" role="alert">
+						<button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
+						{{ Session::get("message") }}
+					</div>
+				</div>
+				{{ Session::forget("message") }}
+			@endif
+			<div class="row">
+
+				<div class="col-md-6">
+					<h3>Existing Application Interfaces :</h3>
+				</div>
+				<div class="col-md-6" style="margin-top:3.5%">
+					<input type="text" class="col-md-12 filterinput" placeholder="Search by Interface Name" />
+				</div>
+			</div>
+			<div class="panel-group" id="accordion">
+			@foreach( $appInterfaces as $index => $interface )
+				<div class="panel panel-default">
+					<div class="panel-heading">
+						<h4 class="panel-title">
+							<a class="accordion-toggle collapsed interface-name" data-toggle="collapse" data-parent="#accordion" href="#collapse-{{$index}}">
+							{{ $interface->applicationName }}
+							</a>
+							<div class="pull-right col-md-2 interface-options fade">
+								<span class="glyphicon glyphicon-pencil edit-app-interface" style="cursor:pointer;" data-toggle="modal" data-target="#edit-app-interface-block" data-interface-id="{{ $interface->applicationInterfaceId }}"></span>
+								<span class="glyphicon glyphicon-trash delete-app-interface" style="cursor:pointer;" data-toggle="modal" data-target="#delete-app-interface-block" data-interface-id="{{ $interface->applicationInterfaceId }}"></span>
+							</div>
+						</h4>
+					</div>
+					<div id="collapse-{{$index}}" class="panel-collapse collapse">
+						<div class="panel-body">
+							<div class="app-interface-block">
+								@include('partials/interface-block', array( 'interfaceObject' => $interface, 'dataTypes' => $dataTypes, 'modules' => $modules) )
+							</div>
+						</div>
+					</div>
+				</div>
+			@endforeach
+			</div>
+		@endif
+
+	</div>
+
+	<div class="app-module-block hide">
+		<div class="input-group">
+			<select name="applicationModules[]" class="app-module-select form-control">
+				@foreach( $modules as $index=> $module)
+				<option value="{{ $module->appModuleId}}">{{ $module->appModuleName }}</option>
+				@endforeach
+			</select>
+			<span class="input-group-addon remove-app-module" style="cursor:pointer;">x</span>
+		</div>
+	</div>
+
+	<div class="app-input-block hide">
+		@include('partials/interface-input-block', array( 'dataTypes' => $dataTypes) )
+	</div>
+
+	<div class="app-output-block hide">
+		@include('partials/interface-output-block', array( 'dataTypes' => $dataTypes) )
+	</div>
+</div>
+
+<div class="modal fade" id="edit-app-interface-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true" data-backdrop="static">
+    <div class="modal-dialog">
+		<form action="{{URL::to('/')}}/app/interface-edit" method="POST" id="edit-app-interface-form">	
+        <div class="modal-content">
+	    	<div class="modal-header">
+	    		<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+	    		<h3 class="text-center">Edit Application Interface</h3>
+	    	</div>
+	    	<div class="modal-body row">
+				<div class="app-interface-form-content col-md-12">
+				</div>
+			</div>
+			<div class="modal-footer">
+	        	<div class="form-group">
+					<input type="button" class="submit-edit-app-interface-form btn btn-primary" value="Update"/>
+					<input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+					<input type="submit" class="btn btn-primary hide really-submit-edit-app-interface-form" value=""/>
+				</div>
+	        </div>	
+        </div>
+        </form>
+    </div>
+</div>
+
+<div class="modal fade" id="create-app-interface-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true" data-backdrop="static">
+    <div class="modal-dialog">
+		<form action="{{URL::to('/')}}/app/interface-create" method="POST" id="create-app-interface-form">	
+        <div class="modal-content">
+	    	<div class="modal-header">
+	    		<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+	    		<h3 class="text-center">Create Application Interface</h3>
+	    	</div>
+	    	<div class="modal-body row">
+				<div class="col-md-12">
+					<div class="create-app-interface-block">
+						@include('partials/interface-block', array( 'dataTypes' => $dataTypes, 'modules' => $modules) )
+					</div>
+				</div>
+			</div>
+			<div class="modal-footer">
+	        	<div class="form-group">
+					<input type="button" class="btn btn-primary submit-create-app-interface-form" value="Create"/>
+					<input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+					<input type="submit" class="btn btn-primary hide really-submit-create-app-interface-form" value=""/>
+				</div>
+	        </div>	
+        </div>
+        </form>
+    </div>
+</div>
+
+<div class="modal fade" id="delete-app-interface-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+	    <div class="modal-dialog">
+
+			<form action="{{URL::to('/')}}/app/interface-delete" method="POST">
+		        <div class="modal-content">
+		            <div class="modal-header">
+		              	<h3 class="text-center">Delete Confirmation Application Interface</h3>
+		            </div>
+		            <div class="modal-body">
+						<input type="hidden" class="form-control delete-interfaceid" name="appInterfaceId"/>
+				 		Do you really want to delete the Application Interface - <span class="delete-interface-name"></span>
+					</div>
+					<div class="modal-footer">
+						<div class="form-group">
+							<input type="submit" class="btn btn-danger" value="Delete"/>
+							<input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+						</div>
+					</div>
+				</div>
+
+			</form>
+
+
+		</div>
+	</div>
+
+@stop
+
+@section('scripts')
+	@parent
+    {{ HTML::script('js/interface.js') }}
+@stop
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/views/application/module.blade.php
----------------------------------------------------------------------
diff --git a/app/views/application/module.blade.php b/app/views/application/module.blade.php
new file mode 100644
index 0000000..006f330
--- /dev/null
+++ b/app/views/application/module.blade.php
@@ -0,0 +1,189 @@
+@extends('layout.basic')
+
+@section('page-header')
+    @parent
+    {{ HTML::style('css/style.css') }}
+@stop
+
+@section('content')
+
+<div class="container">
+	<div class="col-md-offset-2 col-md-8">
+
+		<button class="btn btn-default create-app-module" data-toggle="modal" data-target="#new-app-module-block">Create a new Application Module</button>
+
+	@if( count( $modules) )
+		@if( Session::has("message"))
+			<div class="row">
+				<div class="alert alert-success alert-dismissible" role="alert">
+					<button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
+					{{ Session::get("message") }}
+				</div>
+			</div>
+			{{ Session::forget("message") }}
+		@endif
+		<div class="row">
+			<div class="col-md-6">
+				<h3>Existing Modules :</h3>
+			</div>
+			<div class="col-md-6" style="margin-top:3.5%">
+				<input type="text" class="col-md-12 filterinput" placeholder="Search by Module Name" />
+			</div>
+		</div>
+		<div class="panel-group" id="accordion">
+		@foreach( $modules as $index => $module )
+			<div class="panel panel-default">
+				<div class="panel-heading">
+					<h4 class="panel-title">
+						<a class="accordion-toggle collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapse-{{$index}}">
+						{{ $module->appModuleName }}
+						</a>
+						<div class="pull-right col-md-2 module-options fade">
+							<span class="glyphicon glyphicon-pencil edit-app-module" style="cursor:pointer;" data-toggle="modal" data-target="#edit-app-module-block" data-module-data="{{ htmlentities(json_encode( $module) ) }}"></span>
+							<span class="glyphicon glyphicon-trash delete-app-module" style="cursor:pointer;" data-toggle="modal" data-target="#delete-app-module-block" data-module-data="{{ htmlentities(json_encode( $module) ) }}"></span>
+						</div>
+					</h4>
+				</div>
+				<div id="collapse-{{$index}}" class="panel-collapse collapse">
+					<div class="panel-body">
+						{{ $module->appModuleDescription }}
+					</div>
+				</div>
+			</div>
+		@endforeach
+		</div>
+	@endif
+
+
+ 	<div class="modal fade" id="new-app-module-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+	    <div class="modal-dialog">
+
+			<form action="{{URL::to('/')}}/app/module-create" method="POST">
+
+		        <div class="modal-content">
+		            <div class="modal-header">
+		              	<h3 class="text-center">Create a new Application Module</h3>
+		            </div>
+		            <div class="modal-body">
+				 		@include('partials/module-block')
+					</div>
+					<div class="modal-footer">
+						<div class="form-group">
+							<input type="submit" class="btn btn-primary" value="Save"/>
+							<input type="reset" class="reset-create-form btn btn-success" value ="Reset"/>
+						</div>
+					</div>
+				</div>
+
+			</form>
+
+
+		</div>
+	</div>
+
+	<div class="modal fade" id="edit-app-module-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+	    <div class="modal-dialog">
+
+			<form action="{{URL::to('/')}}/app/module-edit" method="POST">
+		        <div class="modal-content">
+		            <div class="modal-header">
+		              	<h3 class="text-center">Edit Application Module</h3>
+		            </div>
+		            <div class="modal-body">
+						<input type="hidden" class="form-control edit-moduleid" name="appModuleId"/>
+				 		@include('partials/module-block')
+					</div>
+					<div class="modal-footer">
+						<div class="form-group">
+							<input type="submit" class="btn btn-primary" value="Update"/>
+							<input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+						</div>
+					</div>
+				</div>
+
+			</form>
+
+
+		</div>
+	</div>
+
+	<div class="modal fade" id="delete-app-module-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+	    <div class="modal-dialog">
+
+			<form action="{{URL::to('/')}}/app/module-delete" method="POST">
+		        <div class="modal-content">
+		            <div class="modal-header">
+		              	<h3 class="text-center">Delete Confirmation Application Module</h3>
+		            </div>
+		            <div class="modal-body">
+						<input type="hidden" class="form-control delete-moduleid" name="appModuleId"/>
+
+				 		Do you really want to delete the Application Module - <span class="delete-module-name"></span>
+					</div>
+					<div class="modal-footer">
+						<div class="form-group">
+							<input type="submit" class="btn btn-danger" value="Delete"/>
+							<input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+						</div>
+					</div>
+				</div>
+
+			</form>
+
+
+		</div>
+	</div>
+
+@stop
+
+@section('scripts')
+	@parent
+	<script type="text/javascript">
+
+		$(".panel-title").hover( 
+			function(){
+				$(this).find(".module-options").addClass("in");
+			},
+			function(){
+				$(this).find(".module-options").removeClass("in");
+			}
+		);
+
+    	$('.filterinput').keyup(function() {
+            var a = $(this).val();
+            if (a.length > 0) {
+                children = ($("#accordion").children());
+
+                var containing = children.filter(function () {
+                    var regex = new RegExp('\\b' + a, 'i');
+                    return regex.test($('a', this).text());
+                }).slideDown();
+                children.not(containing).slideUp();
+            } else {
+                children.slideDown();
+            }
+            return false;
+        });
+
+        $(".create-app-module").click( function(){
+        	//reset form to clear it out if it got filled by edit modules
+        	$(".reset-create-form").click();
+        })
+
+        $(".edit-app-module").click( function(){
+        	var moduleData = $(this).data("module-data");
+        	console.log( moduleData);
+        	$(".edit-name").val( moduleData.appModuleName);
+        	$(".edit-desc").val( moduleData.appModuleDescription);
+        	$(".edit-version").val( moduleData.appModuleVersion);
+        	$(".edit-moduleid").val( moduleData.appModuleId)
+        });
+
+        $(".delete-app-module").click( function(){
+        	var moduleData = $(this).data("module-data");
+        	$(".delete-module-name").html( moduleData.appModuleName);
+        	$(".delete-moduleid").val( moduleData.appModuleId)
+        });
+    </script>
+
+@stop
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/views/emails/auth/reminder.blade.php
----------------------------------------------------------------------
diff --git a/app/views/emails/auth/reminder.blade.php b/app/views/emails/auth/reminder.blade.php
new file mode 100755
index 0000000..aebea9e
--- /dev/null
+++ b/app/views/emails/auth/reminder.blade.php
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en-US">
+	<head>
+		<meta charset="utf-8">
+	</head>
+	<body>
+		<h2>Password Reset</h2>
+
+		<div>
+			To reset your password, complete this form: {{ URL::to('password/reset', array($token)) }}.<br/>
+			This link will expire in {{ Config::get('auth.reminder.expire', 60) }} minutes.
+		</div>
+	</body>
+</html>

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a325e292/app/views/experiment/create-complete.blade.php
----------------------------------------------------------------------
diff --git a/app/views/experiment/create-complete.blade.php b/app/views/experiment/create-complete.blade.php
new file mode 100644
index 0000000..a3628f6
--- /dev/null
+++ b/app/views/experiment/create-complete.blade.php
@@ -0,0 +1,128 @@
+@extends('layout.basic')
+
+@section('page-header')
+    @parent
+@stop
+
+@section('content')
+<div class="col-md-offset-3 col-md-6">
+    
+    <h1>Create a new experiment</h1>
+    <form action="{{URL::to('/')}}/experiment/create" method="POST" role="form" enctype="multipart/form-data">
+
+        <input type="hidden" name="experiment-name" value="{{$experimentName}}">
+        <input type="hidden" name="experiment-description" value="{{$experimentDescription}}">
+        <input type="hidden" name="project" value="{{$project}}">
+        <input type="hidden" name="application" value="{{$application}}">
+        
+        <div class="form-group required">
+            <label for="experiment-name" class="control-label">Experiment Name</label>
+            <input type="text" class="form-control" name="experiment-name" id="experiment-name" placeholder="Enter experiment name" autofocus required="required" {{ $disabled }} value="{{ $experimentName }}">
+        </div>
+        <div class="form-group">
+            <label for="experiment-description">Experiment Description</label>
+            <textarea class="form-control" name="experiment-description" id="experiment-description" placeholder="Optional: Enter a short description of the experiment" {{ $disabled }}>{{ $experimentDescription }}</textarea>
+        </div>
+        <div class="form-group required">
+            <label for="project" class="control-label">Project</label>
+            {{ Utilities::create_project_select($project, !$disabled) }}
+        </div>
+            <div class="form-group">
+            <label for="application">Application</label>
+            {{ Utilities::create_application_select($application, !$disabled) }}
+        </div>
+
+       <div class="panel panel-default">
+            <div class="panel-heading">Application configuration</div>
+            <div class="panel-body">
+                <label>Application input</label>
+                <div class="well">
+                    <input type="hidden" id="allowedFileSize" value="{{$allowedFileSize}}"/>
+                    {{ Utilities::create_inputs($application, true) }}
+                </div>
+                <div class="form-group">
+                    <label for="compute-resource">Compute Resource</label>';
+                    {{ Utilities::create_compute_resources_select($application, null) }}
+                </div>
+                <div class="form-group">
+                    <label for="node-count">Node Count</label>
+                    <input type="number" class="form-control" name="node-count" id="node-count" value="1" min="1">
+                </div>
+                <div class="form-group">
+                    <label for="cpu-count">Total Core Count</label>
+                    <input type="number" class="form-control" name="cpu-count" id="cpu-count" value="4" min="1">
+                </div>
+                <div class="form-group">
+                    <label for="wall-time">Wall Time Limit</label>
+                    <div class="input-group">
+                        <input type="number" class="form-control" name="wall-time" id="wall-time" value="30" min="0">
+                        <span class="input-group-addon">minutes</span>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <h3>Notifications</h3>
+        <div class="form-group well">
+        	<label for=""></label>
+        	<input type="checkbox" id="enableEmail" name="enableEmailNotification" value="1">Do you want to receive email notifications for status changes in the experiment?<br/>
+    		<div class="emailSection hide">
+    			<h4>Enter Email Address here.</h4>
+    			<div class="emailAddresses">
+    				<input type="email" id="emailAddresses" class="form-control" name="emailAddresses[]" placeholder="Email"/>
+    			</div>
+    			<button type="button" class="addEmail btn btn-default">Add another Email</button>
+    		</div>
+    	</div>
+
+
+        <div class="btn-toolbar">
+            <div class="btn-group">
+                <button name="save" type="submit" class="btn btn-primary" value="Save">Save</button>
+                <button name="launch" type="submit" class="btn btn-success" id="expLaunch" value="Save and launch">Save and launch</button>
+            </div>
+            
+            <a href="{{URL::to('/')}}/experiment/create" class="btn btn-default" role="button">Start over</a>
+        </div>
+        
+    </form>
+        
+
+</div>
+
+
+@stop
+
+@section('scripts')
+    @parent
+    <script>
+    $('.file-input').bind('change', function() {
+
+        var inputFileSize = Math.round( this.files[0].size/(1024*1024) );
+        if( inputFileSize > $("#allowedFileSize").val())
+        {
+            alert( "The input file size is greater than the allowed file size (" + $("#allowedFileSize").val() + " MB) in a form. Please upload another file.");
+            $(this).val("");
+        }
+
+    });
+
+    $("#enableEmail").change( function(){
+    	if( this.checked)
+        {
+            $("#emailAddresses").attr("required", "required");
+    		$(this).parent().children(".emailSection").removeClass("hide");
+        }
+    	else
+        {
+    		$(this).parent().children(".emailSection").addClass("hide");
+            $("#emailAddresses").removeAttr("required");
+        }
+
+    });
+
+    $(".addEmail").click( function(){
+    	var emailInput = $(this).parent().find("#emailAddresses").clone();
+    	emailInput.removeAttr("id").removeAttr("required").val("").appendTo(".emailAddresses");
+    });
+    </script>
+@stop
\ No newline at end of file