syncope-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From andreapatrice...@apache.org
Subject syncope git commit: [SYNCOPE-1009] added documentation about customization of enduser form, minor code cleansing
Date Thu, 13 Apr 2017 09:08:42 GMT
Repository: syncope
Updated Branches:
  refs/heads/master b398bcb60 -> 263540514


[SYNCOPE-1009] added documentation about customization of enduser form, minor code cleansing


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/26354051
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/26354051
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/26354051

Branch: refs/heads/master
Commit: 26354051408bf2d1b06076d7adc6cc941dd463c6
Parents: b398bcb
Author: Andrea Patricelli <andreapatricelli@apache.org>
Authored: Thu Apr 13 11:02:37 2017 +0200
Committer: Andrea Patricelli <andreapatricelli@apache.org>
Committed: Thu Apr 13 11:04:22 2017 +0200

----------------------------------------------------------------------
 .../resources/META-INF/resources/app/index.html |   1 -
 .../app/js/controllers/UserController.js        |   1 -
 .../enduser/src/test/resources/customForm.json  |  48 +-----
 .../workingwithapachesyncope/customization.adoc | 161 ++++++++++++++++++-
 4 files changed, 159 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/26354051/client/enduser/src/main/resources/META-INF/resources/app/index.html
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/index.html b/client/enduser/src/main/resources/META-INF/resources/app/index.html
index 7378236..21a7984 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/index.html
+++ b/client/enduser/src/main/resources/META-INF/resources/app/index.html
@@ -99,7 +99,6 @@ under the License.
   <script src="js/services/groupService.js"></script>
   <script src="js/services/anyService.js"></script>
   <script src="js/services/saml2IdPService.js"></script>
-  <script src="js/services/configurationService.js"></script>
   <!--controllers-->
   <script src="js/controllers/HomeController.js"></script>
   <script src="js/controllers/LoginController.js"></script>

http://git-wip-us.apache.org/repos/asf/syncope/blob/26354051/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
index d49032f..e741524 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
@@ -299,7 +299,6 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope',
'$l
           if ($scope.user.mustChangePassword) {
             $location.path('/mustchangepassword');
           } else {
-//            initConfiguration();
             initProperties();
           }
         }, function (e) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/26354051/client/enduser/src/test/resources/customForm.json
----------------------------------------------------------------------
diff --git a/client/enduser/src/test/resources/customForm.json b/client/enduser/src/test/resources/customForm.json
index 0a8b4d3..9e26dfe 100644
--- a/client/enduser/src/test/resources/customForm.json
+++ b/client/enduser/src/test/resources/customForm.json
@@ -1,47 +1 @@
-{
-  "PLAIN": 
-          {
-            "show": true,
-            "attributes": {
-              "firstname": {
-                "readonly": true,
-                "defaultValues": ["defaultFirstname"]
-              },
-              "surname": {
-                "readonly": false,
-                "defaultValues": []
-              },
-              "fullname": {
-                "readonly": false
-              },
-              "loginDate": {
-                "readonly": false
-              },
-              "additional#loginDate": {
-                "readonly": false
-              },
-              "additional#ctype": {
-                "readonly": false,
-                "defaultValues": ["ctypeDefault"]
-              },
-              "additional#cool": {
-                "readonly": false,
-                "defaultValues": ["true"]
-              }
-            }
-          },
-  "DERIVED":
-          {
-            "show": false
-          },
-  "VIRTUAL": 
-          {
-            "show": true,
-            "attributes": {
-              "virtualdata": {
-                "readonly": true,
-                "defaultValues": ["defaultVirtualData"]
-              }
-            }
-          }
-}
\ No newline at end of file
+{}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/26354051/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc
b/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc
index 954541f..ed72922 100644
--- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc
+++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc
@@ -110,6 +110,7 @@ $ mvn clean verify \
 $ cp core/target/classes/*properties /opt/syncope/conf
 $ cp console/target/classes/*properties /opt/syncope/conf
 $ cp enduser/target/classes/*properties /opt/syncope/conf
+$ cp enduser/target/classes/customForm.json /opt/syncope/conf
 ....
 
 After downloading all of the dependencies that are needed, three WAR files will be produced:
@@ -404,10 +405,10 @@ Add the following dependencies to `enduser/pom.xml`:
 
 Copy `enduser/src/main/resources/all/saml2sp-agent.properties` to `enduser/src/main/resources/saml2sp-agent.properties`.
 
-[[customization-enduser-translations]]
-===== Translations
+[[customization-enduser-i18n]]
+===== i18n 
 
-The <<enduser-application>> comes with a native translation mechanism.
+The <<enduser-application>> comes with a native internationalization mechanism.
 
 Under the `enduser/src/main/webapp/app/languages/` directory, a sub-directory for each supported
language is available;
 each language sub-directory contains two JSON files:
@@ -459,6 +460,160 @@ as
 and modify the JSON files under the new directory
 ====
 
+===== Form customization
+
+User self create/edit form could be customized in order to:
+
+* Hide/show some attributes
+* Deny/allow attribute write
+
+Under the `enduser/src/main/resources` directory you can find `customForm.json` file.
+This specifies the rules about form customization, in particular it allows to customize `PLAIN`,
`DERIVED` and `VIRTUAL`
+attributes forms.
+
+[TIP]
+====
+The file provided with the archetype contains an empty json: `{}`.
+If such file is deleted or contains empty or not parseable json, customization will be simply
ignored and all attributes
+will be shown.
+====
+
+Here is an example:
+
+```
+{
+  "PLAIN": 
+          {
+            "show": true,
+            "attributes": {
+              "firstname": {
+                "readonly": true,
+                "defaultValues": ["defaultFirstname1", "defaultFirstname2"]
+              },
+              "surname": {
+                "readonly": false,
+                "defaultValues": []
+              },
+              "fullname": {
+                "readonly": false
+              },
+              "email": {
+                "readonly": false,
+                "defaultValues": ["test@apache.org"]
+              },
+              "userId": {
+                "readonly": false
+              },
+              "cool": {
+                "readonly": true,
+                "defaultValues": ["true"]
+              },
+              "additional#loginDate": {
+                "readonly": false
+              },
+              "additional#cool": {
+                "readonly": false,
+                "defaultValues": ["true"]
+              }
+            }
+          },
+  "DERIVED":
+          {
+            "show": false
+          },
+  "VIRTUAL": 
+          {
+            "show": true,
+            "attributes": {
+              "virtualdata": {
+                "readonly": true,
+                "defaultValues": ["defaultVirtualData"]
+              }
+            }
+          }
+}
+```
+As you can see the file has two main levels:
+
+* Schema type: `PLAIN`, `DERIVED`, `VIRTUAL`.
+* Attributes: list of attributes (by schema type) to be shown in the form.
+
+====== Schema type
+
+The schema type level allows to define customization of the three sub-forms available in
the wizard.
+An user can specify one or each of the three sections in order to customize only what is
really needed.
+Though enable/disable of schema forms can be configured also from the `app.js` file of the
enduser, form customization
+json provides an attribute `show` to hide/show attributes input fields.
+If `show` is set to `false` info contained into `attributes` will be ignored and nothing
is displayed in the form section.
+
+====== Attributes
+
+Attributes level contains a map of attributes to show.
+
+[TIP]
+====
+Attributes map is meant to be populated, i.e. empty `attributes` field means "do not filter
at all and show all attributes".
+For example:
+```
+{
+  "PLAIN": 
+          {
+            "show": true,
+            "attributes": {}
+          }
+}
+```
+shows all attributes.
+If you want to hide all attributes please use `show` field: `show: false`.
+====
+
+As you can see from the sample json each attribute has:
+
+* A name: the name of schema from which the attribute has been generated.
+* A body: specifies if attribute should be readonly and its default values.
+
+Here is an example of attribute specification:
+
+```
+"firstname": {
+                "readonly": true,
+                "defaultValues": ["defaultFirstname","defaultFirstname2"]
+              }
+```
+In the example `firstname` is readonly and has two default values defined by a (comma separated)
array of strings. 
+Default values section can be omitted if there are not default values to assign to that attribute.
+
+[CAUTION]
+====
+There are some clarifications to be made about form customization:
+
+* Default value of `show` (about schema sections) is `true`, i.e. if not specified the section
is visible.
+* `readonly` field must not be confused with schema `readonly` information. In form customization
`readonly` 
+means a front-end readonly, i.e. the attribute is not modifiable from the enduser, but it
can be fully accessible 
+from the administration console. 
+It does not provide info about the schema, but about the specific attribute of the USER.
+* If `readonly` is not specified it is considered `false` by default.
+* `defaultValues` is an array of strings; this means that also date values should be specified
as strings, in particular
+in dates must be provided into timestamp format in milliseconds (this behavior will be improved
further).
+* `defaultValues` (obviously) do not averride populated fields, an attribute is filled with
default values 
+only if it is empty (in create and update).
+====
+
+====== Hot deploy
+
+Form customization supports "hot deploy" feature. This means that `customForm.json` could
be edited and reloaded 
+without stopping and re-starting the application server.
+Obviously to see "hot" modifications to the form you must refresh the page of the browser.
+
+[TIP]
+====
+When running Syncope into embedded mode you should edit `fit/enduser-reference/target/test-classes/customForm.json`
+file.
+
+While running, instead, Syncope in a real environment you should edit the file under `conf.directory`.
Please refer to <<deployment-directories>> section. 
+====
+
+
 [[customization-extensions]]
 ==== Extensions
 


Mime
View raw message