{hidden}
DO NOT EDIT THE CONTENT OF THIS PAGE DIRECTLY, UNLESS YOU KNOW WHAT YOU'RE DOING.
		THE STRUCTURE OF THE CONTENT IS VITAL IN BEING ABLE TO EXTRACT CHANGES FROM THE PAGE AND MERGE THEM BACK INTO SERVOY SOURCE{hidden}
{sub-section:description|text=}{sub-section}\\ 

{table:id=|class=servoy sReturnTypes}{tr:style=height: 30px;}{th}Return Types{th}{tr}{tr}{td}{td}{tr}{table}\\ 

{table:id=|class=servoy sSummery}{colgroup}{column:padding=0px|width=80px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Constants Summery{th}{tr}{tbody}{tr}{td}[Number]{td}{td}[#ACCESSIBLE]
Constant representing the accessible flag for form security.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#DELETE]
Constant representing the delete flag for table security.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#INSERT]
Constant representing the insert flag for table security.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#READ]
Constant representing the read flag for table security.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#TRACKING]
Constant representing the tracking flag for table security.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#UPDATE]
Constant representing the update flag for table security.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#VIEWABLE]
Constant representing the viewable flag for form security.{td}{tr}{tbody}{table}\\ 

{table:id=|class=servoy sSummery}{colgroup}{column:padding=0px|width=80px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Method Summery{th}{tr}{tbody}{tr}{td}[Boolean]{td}{td}[#addUserToGroup]\(a_userUID, groupName)
Adds an user to a named group.{td}{tr}{tbody}{tbody}{tr}{td}[Object]{td}{td}[#authenticate]\(authenticator_solution, method)
{td}{tr}{tbody}{tbody}{tr}{td}[Object]{td}{td}[#authenticate]\(authenticator_solution, method, \[credentials\])
Authenticate to the Servoy Server using one of the installed authenticators or the Servoy default authenticator.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#canDelete]\(dataSource)
Returns a boolean value for security rights.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#canInsert]\(dataSource)
Returns a boolean value for security rights.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#canRead]\(dataSource)
Returns a boolean value for security rights.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#canUpdate]\(dataSource)
Returns a boolean value for security rights.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#changeGroupName]\(oldGroupName, newGroupName)
Changes the groupname of a group.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#changeUserName]\(a_userUID, username)
Changes the username of the specified userUID.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#checkPassword]\(a_userUID, password)
Returns true if the password for that userUID is correct, else false.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#createGroup]\(groupName)
Creates a group, returns the groupname (or null when group couldn't be created).{td}{tr}{tbody}{tbody}{tr}{td}[Object]{td}{td}[#createUser]\(username, password, \[userUID\])
Creates a new user, returns new uid (or null when group couldn't be created or user alreay exist).{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#deleteGroup]\(groupName)
Deletes a group, returns true if no error was reported.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#deleteUser]\(userUID)
Deletes an user.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#getClientID]\()
Returns the client ID.{td}{tr}{tbody}{tbody}{tr}{td}[JSDataSet]{td}{td}[#getElementUUIDs]\(formname)
Returns the form elements UUID's as dataset, the one with no name is the form itself.{td}{tr}{tbody}{tbody}{tr}{td}[JSDataSet]{td}{td}[#getGroups]\()
Get all the groups (returns a dataset).{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#getSystemUserName]\()
Retrieves the username of the currently logged in user on operating system level.{td}{tr}{tbody}{tbody}{tr}{td}[JSDataSet]{td}{td}[#getUserGroups]\()
{td}{tr}{tbody}{tbody}{tr}{td}[JSDataSet]{td}{td}[#getUserGroups]\(\[userUID\])
Get all the groups of the current user, finds the goups for given user UID if passed as parameter.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#getUserName]\(\[userUID\])
Get the current user name (null if not logged in), finds the user name for given user UID if passed as parameter.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#getUserUID]\(\[username\])
Get the current user UID (null if not logged in), finds the userUID for given user\_name if passed as parameter.{td}{tr}{tbody}{tbody}{tr}{td}[JSDataSet]{td}{td}[#getUsers]\()
Get all the users in the security settings (returns a dataset).{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#login]\(display_username, a_userUID, groups)
Login to be able to leave the solution loginForm.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#logout]\(\[solutionToLoad\], \[method\], \[argument\])
Logout the current user.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#removeUserFromGroup]\(a_userUID, groupName)
Removes an user from a group.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#setPassword]\(a_userUID, password)
Set a new password for the given userUID.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#setSecuritySettings]\(dataset)
Sets the security settings; the entries contained in the given dataset will override those contained in the current security settings.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#setUserUID]\(a_userUID, newUserUID)
Set a new userUID for the given userUID.{td}{tr}{tbody}{table}\\ 

{table:id=constant|class=servoy sDetail}{colgroup}{column:padding=0px|width=100%}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Constants Details{th}{tr}{tbody:id=ACCESSIBLE|class=node}{tr:id=name}{td}h6.ACCESSIBLE{td}{tr}{tr:id=des}{td}{sub-section:ACCESSIBLE_des|text=|trigger=button}{sub-section}{sub-section:ACCESSIBLE_des|trigger=none|class=sIndent}Constant representing the accessible flag for form security.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:ACCESSIBLE_snc|text=|trigger=button}{sub-section}{sub-section:ACCESSIBLE_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:ACCESSIBLE_prs|text=|trigger=button}{sub-section}{sub-section:ACCESSIBLE_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:ACCESSIBLE_ret|text=|trigger=button}{sub-section}{sub-section:ACCESSIBLE_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:ACCESSIBLE_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:ACCESSIBLE_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:ACCESSIBLE_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:ACCESSIBLE_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:ACCESSIBLE_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:ACCESSIBLE_sam|trigger=none}{code:language=javascript}
var colNames = new Array();
colNames[0] = 'uuid';
colNames[1] = 'flags';
var dataset = databaseManager.createEmptyDataSet(0,colNames);

var row = new Array();
row[0] = '413a4d69-becb-4ae4-8fdd-980755d6a7fb';//normally retreived via security.getElementUUIDs(...)
row[1] = JSSecurity.VIEWABLE|JSSecurity.ACCESSIBLE; // use bitwise 'or' for both
dataset.addRow(row);//setting element security

row = new Array();
row[0] = 'example_data.orders';
row[1] = JSSecurity.READ|JSSecurity.INSERT|JSSecurity.UPDATE|JSSecurity.DELETE|JSSecurity.TRACKING; //use bitwise 'or' for multiple flags
dataset.addRow(row);//setting table security

security.setSecuritySettings(dataset);//to be called in solution startup method
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=DELETE|class=node}{tr:id=name}{td}h6.DELETE{td}{tr}{tr:id=des}{td}{sub-section:DELETE_des|text=|trigger=button}{sub-section}{sub-section:DELETE_des|trigger=none|class=sIndent}Constant representing the delete flag for table security.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:DELETE_snc|text=|trigger=button}{sub-section}{sub-section:DELETE_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:DELETE_prs|text=|trigger=button}{sub-section}{sub-section:DELETE_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:DELETE_ret|text=|trigger=button}{sub-section}{sub-section:DELETE_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:DELETE_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:DELETE_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:DELETE_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:DELETE_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:DELETE_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:DELETE_sam|trigger=none}{code:language=javascript}
var colNames = new Array();
colNames[0] = 'uuid';
colNames[1] = 'flags';
var dataset = databaseManager.createEmptyDataSet(0,colNames);

var row = new Array();
row[0] = '413a4d69-becb-4ae4-8fdd-980755d6a7fb';//normally retreived via security.getElementUUIDs(...)
row[1] = JSSecurity.VIEWABLE|JSSecurity.ACCESSIBLE; // use bitwise 'or' for both
dataset.addRow(row);//setting element security

row = new Array();
row[0] = 'example_data.orders';
row[1] = JSSecurity.READ|JSSecurity.INSERT|JSSecurity.UPDATE|JSSecurity.DELETE|JSSecurity.TRACKING; //use bitwise 'or' for multiple flags
dataset.addRow(row);//setting table security

security.setSecuritySettings(dataset);//to be called in solution startup method
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=INSERT|class=node}{tr:id=name}{td}h6.INSERT{td}{tr}{tr:id=des}{td}{sub-section:INSERT_des|text=|trigger=button}{sub-section}{sub-section:INSERT_des|trigger=none|class=sIndent}Constant representing the insert flag for table security.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:INSERT_snc|text=|trigger=button}{sub-section}{sub-section:INSERT_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:INSERT_prs|text=|trigger=button}{sub-section}{sub-section:INSERT_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:INSERT_ret|text=|trigger=button}{sub-section}{sub-section:INSERT_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:INSERT_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:INSERT_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:INSERT_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:INSERT_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:INSERT_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:INSERT_sam|trigger=none}{code:language=javascript}
var colNames = new Array();
colNames[0] = 'uuid';
colNames[1] = 'flags';
var dataset = databaseManager.createEmptyDataSet(0,colNames);

var row = new Array();
row[0] = '413a4d69-becb-4ae4-8fdd-980755d6a7fb';//normally retreived via security.getElementUUIDs(...)
row[1] = JSSecurity.VIEWABLE|JSSecurity.ACCESSIBLE; // use bitwise 'or' for both
dataset.addRow(row);//setting element security

row = new Array();
row[0] = 'example_data.orders';
row[1] = JSSecurity.READ|JSSecurity.INSERT|JSSecurity.UPDATE|JSSecurity.DELETE|JSSecurity.TRACKING; //use bitwise 'or' for multiple flags
dataset.addRow(row);//setting table security

security.setSecuritySettings(dataset);//to be called in solution startup method
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=READ|class=node}{tr:id=name}{td}h6.READ{td}{tr}{tr:id=des}{td}{sub-section:READ_des|text=|trigger=button}{sub-section}{sub-section:READ_des|trigger=none|class=sIndent}Constant representing the read flag for table security.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:READ_snc|text=|trigger=button}{sub-section}{sub-section:READ_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:READ_prs|text=|trigger=button}{sub-section}{sub-section:READ_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:READ_ret|text=|trigger=button}{sub-section}{sub-section:READ_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:READ_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:READ_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:READ_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:READ_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:READ_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:READ_sam|trigger=none}{code:language=javascript}
var colNames = new Array();
colNames[0] = 'uuid';
colNames[1] = 'flags';
var dataset = databaseManager.createEmptyDataSet(0,colNames);

var row = new Array();
row[0] = '413a4d69-becb-4ae4-8fdd-980755d6a7fb';//normally retreived via security.getElementUUIDs(...)
row[1] = JSSecurity.VIEWABLE|JSSecurity.ACCESSIBLE; // use bitwise 'or' for both
dataset.addRow(row);//setting element security

row = new Array();
row[0] = 'example_data.orders';
row[1] = JSSecurity.READ|JSSecurity.INSERT|JSSecurity.UPDATE|JSSecurity.DELETE|JSSecurity.TRACKING; //use bitwise 'or' for multiple flags
dataset.addRow(row);//setting table security

security.setSecuritySettings(dataset);//to be called in solution startup method
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=TRACKING|class=node}{tr:id=name}{td}h6.TRACKING{td}{tr}{tr:id=des}{td}{sub-section:TRACKING_des|text=|trigger=button}{sub-section}{sub-section:TRACKING_des|trigger=none|class=sIndent}Constant representing the tracking flag for table security.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:TRACKING_snc|text=|trigger=button}{sub-section}{sub-section:TRACKING_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:TRACKING_prs|text=|trigger=button}{sub-section}{sub-section:TRACKING_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:TRACKING_ret|text=|trigger=button}{sub-section}{sub-section:TRACKING_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:TRACKING_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:TRACKING_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:TRACKING_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:TRACKING_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:TRACKING_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:TRACKING_sam|trigger=none}{code:language=javascript}
var colNames = new Array();
colNames[0] = 'uuid';
colNames[1] = 'flags';
var dataset = databaseManager.createEmptyDataSet(0,colNames);

var row = new Array();
row[0] = '413a4d69-becb-4ae4-8fdd-980755d6a7fb';//normally retreived via security.getElementUUIDs(...)
row[1] = JSSecurity.VIEWABLE|JSSecurity.ACCESSIBLE; // use bitwise 'or' for both
dataset.addRow(row);//setting element security

row = new Array();
row[0] = 'example_data.orders';
row[1] = JSSecurity.READ|JSSecurity.INSERT|JSSecurity.UPDATE|JSSecurity.DELETE|JSSecurity.TRACKING; //use bitwise 'or' for multiple flags
dataset.addRow(row);//setting table security

security.setSecuritySettings(dataset);//to be called in solution startup method
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=UPDATE|class=node}{tr:id=name}{td}h6.UPDATE{td}{tr}{tr:id=des}{td}{sub-section:UPDATE_des|text=|trigger=button}{sub-section}{sub-section:UPDATE_des|trigger=none|class=sIndent}Constant representing the update flag for table security.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:UPDATE_snc|text=|trigger=button}{sub-section}{sub-section:UPDATE_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:UPDATE_prs|text=|trigger=button}{sub-section}{sub-section:UPDATE_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:UPDATE_ret|text=|trigger=button}{sub-section}{sub-section:UPDATE_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:UPDATE_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:UPDATE_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:UPDATE_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:UPDATE_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:UPDATE_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:UPDATE_sam|trigger=none}{code:language=javascript}
var colNames = new Array();
colNames[0] = 'uuid';
colNames[1] = 'flags';
var dataset = databaseManager.createEmptyDataSet(0,colNames);

var row = new Array();
row[0] = '413a4d69-becb-4ae4-8fdd-980755d6a7fb';//normally retreived via security.getElementUUIDs(...)
row[1] = JSSecurity.VIEWABLE|JSSecurity.ACCESSIBLE; // use bitwise 'or' for both
dataset.addRow(row);//setting element security

row = new Array();
row[0] = 'example_data.orders';
row[1] = JSSecurity.READ|JSSecurity.INSERT|JSSecurity.UPDATE|JSSecurity.DELETE|JSSecurity.TRACKING; //use bitwise 'or' for multiple flags
dataset.addRow(row);//setting table security

security.setSecuritySettings(dataset);//to be called in solution startup method
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=VIEWABLE|class=node}{tr:id=name}{td}h6.VIEWABLE{td}{tr}{tr:id=des}{td}{sub-section:VIEWABLE_des|text=|trigger=button}{sub-section}{sub-section:VIEWABLE_des|trigger=none|class=sIndent}Constant representing the viewable flag for form security.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:VIEWABLE_snc|text=|trigger=button}{sub-section}{sub-section:VIEWABLE_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:VIEWABLE_prs|text=|trigger=button}{sub-section}{sub-section:VIEWABLE_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:VIEWABLE_ret|text=|trigger=button}{sub-section}{sub-section:VIEWABLE_ret|trigger=none|class=sIndent}[Number]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:VIEWABLE_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:VIEWABLE_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:VIEWABLE_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:VIEWABLE_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:VIEWABLE_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:VIEWABLE_sam|trigger=none}{code:language=javascript}
var colNames = new Array();
colNames[0] = 'uuid';
colNames[1] = 'flags';
var dataset = databaseManager.createEmptyDataSet(0,colNames);

var row = new Array();
row[0] = '413a4d69-becb-4ae4-8fdd-980755d6a7fb';//normally retreived via security.getElementUUIDs(...)
row[1] = JSSecurity.VIEWABLE|JSSecurity.ACCESSIBLE; // use bitwise 'or' for both
dataset.addRow(row);//setting element security

row = new Array();
row[0] = 'example_data.orders';
row[1] = JSSecurity.READ|JSSecurity.INSERT|JSSecurity.UPDATE|JSSecurity.DELETE|JSSecurity.TRACKING; //use bitwise 'or' for multiple flags
dataset.addRow(row);//setting table security

security.setSecuritySettings(dataset);//to be called in solution startup method
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}\\ 

{table:id=function|class=servoy sDetail}{colgroup}{column:padding=0px|width=100%}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Method Details{th}{tr}{tbody:id=addUserToGroup|class=node}{tr:id=name}{td}h6.addUserToGroup{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}addUserToGroup{span}{span:id=iets|style=float: left;}\(a_userUID, groupName){span}{td}{tr}{tr:id=des}{td}{sub-section:addUserToGroup_des|text=|trigger=button}{sub-section}{sub-section:addUserToGroup_des|trigger=none|class=sIndent}Adds an user to a named group.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:addUserToGroup_snc|text=|trigger=button}{sub-section}{sub-section:addUserToGroup_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:addUserToGroup_prs|text=|trigger=button}{sub-section}{sub-section:addUserToGroup_prs|trigger=none|class=sIndent}\{[Object]} a_userUID -- the user UID to be added
\{[Object]} groupName -- the group to add to
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:addUserToGroup_ret|text=|trigger=button}{sub-section}{sub-section:addUserToGroup_ret|trigger=none|class=sIndent}[Boolean] -- true if added{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:addUserToGroup_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:addUserToGroup_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:addUserToGroup_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:addUserToGroup_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:addUserToGroup_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:addUserToGroup_sam|trigger=none}{code:language=javascript}
var userUID = security.getUserUID();
security.addUserToGroup(userUID, 'groupname');
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=authenticate|class=node}{tr:id=name}{td}h6.authenticate{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Object]{span}{span:id=iets|style=float: left; font-weight: bold;}authenticate{span}{span:id=iets|style=float: left;}\(authenticator_solution, method, \[credentials\]){span}{td}{tr}{tr:id=des}{td}{sub-section:authenticate_des|text=|trigger=button}{sub-section}{sub-section:authenticate_des|trigger=none|class=sIndent}Authenticate to the Servoy Server using one of the installed authenticators or the Servoy default authenticator.

Note: this method should be called from a login solution.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:authenticate_snc|text=|trigger=button}{sub-section}{sub-section:authenticate_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:authenticate_prs|text=|trigger=button}{sub-section}{sub-section:authenticate_prs|trigger=none|class=sIndent}\{[String]} authenticator_solution -- authenticator solution installed on the Servoy Server, null for servoy built\-in authentication
\{[String]} method -- authenticator method, null for servoy built\-in authentication
\{[Object]\[]} \[credentials\] -- array whose elements are passed as arguments to the authenticator method, in case of servoy built\-in authentication this should be \[username, password\]
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:authenticate_ret|text=|trigger=button}{sub-section}{sub-section:authenticate_ret|trigger=none|class=sIndent}[Object] -- authentication result from authenticator solution or boolean in case of servoy built-in authentication{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:authenticate_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:authenticate_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:authenticate_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:authenticate_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:authenticate_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:authenticate_sam|trigger=none}{code:language=javascript}
// create the credentials object as expected by the authenticator solution
var ok =  security.authenticate('myldap_authenticator', 'login', [globals.userName, globals.passWord])
if (!ok)
{
	plugins.dialogs.showErrorDialog('Login failed', 'OK')
}

// if no authenticator name is used, the credentials are checked using the Servoy built-in user management
ok = security.authenticate(null, null, [globals.userName, globals.passWord])
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=canDelete|class=node}{tr:id=name}{td}h6.canDelete{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}canDelete{span}{span:id=iets|style=float: left;}\(dataSource){span}{td}{tr}{tr:id=des}{td}{sub-section:canDelete_des|text=|trigger=button}{sub-section}{sub-section:canDelete_des|trigger=none|class=sIndent}Returns a boolean value for security rights.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:canDelete_snc|text=|trigger=button}{sub-section}{sub-section:canDelete_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:canDelete_prs|text=|trigger=button}{sub-section}{sub-section:canDelete_prs|trigger=none|class=sIndent}\{[String]} dataSource -- the datasource
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:canDelete_ret|text=|trigger=button}{sub-section}{sub-section:canDelete_ret|trigger=none|class=sIndent}[Boolean] -- true if allowed{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:canDelete_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:canDelete_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:canDelete_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:canDelete_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:canDelete_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:canDelete_sam|trigger=none}{code:language=javascript}
var dataSource = controller.getDataSource();
var canDelete = security.canDelete(dataSource);
var canInsert = security.canInsert(dataSource);
var canUpdate = security.canUpdate(dataSource);
var canRead = security.canRead(dataSource);
application.output("Can delete? " + canDelete);
application.output("Can insert? " + canInsert);
application.output("Can update? " + canUpdate);
application.output("Can read? " + canRead);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=canInsert|class=node}{tr:id=name}{td}h6.canInsert{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}canInsert{span}{span:id=iets|style=float: left;}\(dataSource){span}{td}{tr}{tr:id=des}{td}{sub-section:canInsert_des|text=|trigger=button}{sub-section}{sub-section:canInsert_des|trigger=none|class=sIndent}Returns a boolean value for security rights.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:canInsert_snc|text=|trigger=button}{sub-section}{sub-section:canInsert_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:canInsert_prs|text=|trigger=button}{sub-section}{sub-section:canInsert_prs|trigger=none|class=sIndent}\{[String]} dataSource -- the datasource
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:canInsert_ret|text=|trigger=button}{sub-section}{sub-section:canInsert_ret|trigger=none|class=sIndent}[Boolean] -- true if allowed{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:canInsert_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:canInsert_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:canInsert_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:canInsert_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:canInsert_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:canInsert_sam|trigger=none}{code:language=javascript}
var dataSource = controller.getDataSource();
var canDelete = security.canDelete(dataSource);
var canInsert = security.canInsert(dataSource);
var canUpdate = security.canUpdate(dataSource);
var canRead = security.canRead(dataSource);
application.output("Can delete? " + canDelete);
application.output("Can insert? " + canInsert);
application.output("Can update? " + canUpdate);
application.output("Can read? " + canRead);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=canRead|class=node}{tr:id=name}{td}h6.canRead{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}canRead{span}{span:id=iets|style=float: left;}\(dataSource){span}{td}{tr}{tr:id=des}{td}{sub-section:canRead_des|text=|trigger=button}{sub-section}{sub-section:canRead_des|trigger=none|class=sIndent}Returns a boolean value for security rights.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:canRead_snc|text=|trigger=button}{sub-section}{sub-section:canRead_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:canRead_prs|text=|trigger=button}{sub-section}{sub-section:canRead_prs|trigger=none|class=sIndent}\{[String]} dataSource -- the datasource
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:canRead_ret|text=|trigger=button}{sub-section}{sub-section:canRead_ret|trigger=none|class=sIndent}[Boolean] -- true if allowed{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:canRead_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:canRead_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:canRead_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:canRead_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:canRead_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:canRead_sam|trigger=none}{code:language=javascript}
var dataSource = controller.getDataSource();
var canDelete = security.canDelete(dataSource);
var canInsert = security.canInsert(dataSource);
var canUpdate = security.canUpdate(dataSource);
var canRead = security.canRead(dataSource);
application.output("Can delete? " + canDelete);
application.output("Can insert? " + canInsert);
application.output("Can update? " + canUpdate);
application.output("Can read? " + canRead);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=canUpdate|class=node}{tr:id=name}{td}h6.canUpdate{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}canUpdate{span}{span:id=iets|style=float: left;}\(dataSource){span}{td}{tr}{tr:id=des}{td}{sub-section:canUpdate_des|text=|trigger=button}{sub-section}{sub-section:canUpdate_des|trigger=none|class=sIndent}Returns a boolean value for security rights.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:canUpdate_snc|text=|trigger=button}{sub-section}{sub-section:canUpdate_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:canUpdate_prs|text=|trigger=button}{sub-section}{sub-section:canUpdate_prs|trigger=none|class=sIndent}\{[String]} dataSource -- the datasource
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:canUpdate_ret|text=|trigger=button}{sub-section}{sub-section:canUpdate_ret|trigger=none|class=sIndent}[Boolean] -- true if allowed{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:canUpdate_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:canUpdate_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:canUpdate_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:canUpdate_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:canUpdate_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:canUpdate_sam|trigger=none}{code:language=javascript}
var dataSource = controller.getDataSource();
var canDelete = security.canDelete(dataSource);
var canInsert = security.canInsert(dataSource);
var canUpdate = security.canUpdate(dataSource);
var canRead = security.canRead(dataSource);
application.output("Can delete? " + canDelete);
application.output("Can insert? " + canInsert);
application.output("Can update? " + canUpdate);
application.output("Can read? " + canRead);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=changeGroupName|class=node}{tr:id=name}{td}h6.changeGroupName{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}changeGroupName{span}{span:id=iets|style=float: left;}\(oldGroupName, newGroupName){span}{td}{tr}{tr:id=des}{td}{sub-section:changeGroupName_des|text=|trigger=button}{sub-section}{sub-section:changeGroupName_des|trigger=none|class=sIndent}Changes the groupname of a group.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:changeGroupName_snc|text=|trigger=button}{sub-section}{sub-section:changeGroupName_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:changeGroupName_prs|text=|trigger=button}{sub-section}{sub-section:changeGroupName_prs|trigger=none|class=sIndent}\{[Object]} oldGroupName -- the old name
\{[String]} newGroupName -- the new name
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:changeGroupName_ret|text=|trigger=button}{sub-section}{sub-section:changeGroupName_ret|trigger=none|class=sIndent}[Boolean] -- true if changed{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:changeGroupName_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:changeGroupName_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:changeGroupName_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:changeGroupName_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:changeGroupName_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:changeGroupName_sam|trigger=none}{code:language=javascript}
security.changeGroupName('oldGroup', 'newGroup');
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=changeUserName|class=node}{tr:id=name}{td}h6.changeUserName{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}changeUserName{span}{span:id=iets|style=float: left;}\(a_userUID, username){span}{td}{tr}{tr:id=des}{td}{sub-section:changeUserName_des|text=|trigger=button}{sub-section}{sub-section:changeUserName_des|trigger=none|class=sIndent}Changes the username of the specified userUID.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:changeUserName_snc|text=|trigger=button}{sub-section}{sub-section:changeUserName_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:changeUserName_prs|text=|trigger=button}{sub-section}{sub-section:changeUserName_prs|trigger=none|class=sIndent}\{[Object]} a_userUID -- the userUID to work on
\{[String]} username -- the new username
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:changeUserName_ret|text=|trigger=button}{sub-section}{sub-section:changeUserName_ret|trigger=none|class=sIndent}[Boolean] -- true if changed{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:changeUserName_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:changeUserName_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:changeUserName_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:changeUserName_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:changeUserName_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:changeUserName_sam|trigger=none}{code:language=javascript}
if(security.changeUserName(security.getUserUID('name1'), 'name2'))
{
	application.output('Username changed');
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=checkPassword|class=node}{tr:id=name}{td}h6.checkPassword{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}checkPassword{span}{span:id=iets|style=float: left;}\(a_userUID, password){span}{td}{tr}{tr:id=des}{td}{sub-section:checkPassword_des|text=|trigger=button}{sub-section}{sub-section:checkPassword_des|trigger=none|class=sIndent}Returns true if the password for that userUID is correct, else false.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:checkPassword_snc|text=|trigger=button}{sub-section}{sub-section:checkPassword_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:checkPassword_prs|text=|trigger=button}{sub-section}{sub-section:checkPassword_prs|trigger=none|class=sIndent}\{[Object]} a_userUID -- the userUID to check the password for
\{[String]} password -- the new password
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:checkPassword_ret|text=|trigger=button}{sub-section}{sub-section:checkPassword_ret|trigger=none|class=sIndent}[Boolean] -- true if password oke{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:checkPassword_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:checkPassword_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:checkPassword_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:checkPassword_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:checkPassword_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:checkPassword_sam|trigger=none}{code:language=javascript}
if(security.checkPassword(security.getUserUID(), 'password1'))
{
	security.setPassword(security.getUserUID(), 'password2')
}
else
{
	application.output('wrong password')
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createGroup|class=node}{tr:id=name}{td}h6.createGroup{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}createGroup{span}{span:id=iets|style=float: left;}\(groupName){span}{td}{tr}{tr:id=des}{td}{sub-section:createGroup_des|text=|trigger=button}{sub-section}{sub-section:createGroup_des|trigger=none|class=sIndent}Creates a group, returns the groupname (or null when group couldn't be created).{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:createGroup_snc|text=|trigger=button}{sub-section}{sub-section:createGroup_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:createGroup_prs|text=|trigger=button}{sub-section}{sub-section:createGroup_prs|trigger=none|class=sIndent}\{[String]} groupName -- the group name to create
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:createGroup_ret|text=|trigger=button}{sub-section}{sub-section:createGroup_ret|trigger=none|class=sIndent}[String] -- the created groupname{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:createGroup_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:createGroup_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:createGroup_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:createGroup_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:createGroup_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:createGroup_sam|trigger=none}{code:language=javascript}
var removeUser = true;
//create a user
var uid = security.createUser('myusername', 'mypassword');
if (uid) //test if user was created
{
	// Get all the groups
	var set = security.getGroups();
	for(var p = 1 ; p <= set.getMaxRowIndex() ; p++)
	{
		// output name of the group
		application.output(set.getValue(p, 2));
		// add user to group
		security.addUserToGroup(uid, set.getValue(p,2));
	}
	// if not remove user, remove user from all the groups
	if(!removeUser)
	{
		// get now all the groups that that users has (all if above did go well)
		var set =security.getUserGroups(uid);
		for(var p = 1;p<=set.getMaxRowIndex();p++)
		{
			// output name of the group
			application.output(set.getValue(p, 2));
			// remove the user from the group
			security.removeUserFromGroup(uid, set.getValue(p,2));
		}
	}
	else
	{
		// delete the user (the user will be removed from the groups)
		security.deleteUser(uid);
	}
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createUser|class=node}{tr:id=name}{td}h6.createUser{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Object]{span}{span:id=iets|style=float: left; font-weight: bold;}createUser{span}{span:id=iets|style=float: left;}\(username, password, \[userUID\]){span}{td}{tr}{tr:id=des}{td}{sub-section:createUser_des|text=|trigger=button}{sub-section}{sub-section:createUser_des|trigger=none|class=sIndent}Creates a new user, returns new uid (or null when group couldn't be created or user alreay exist).{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:createUser_snc|text=|trigger=button}{sub-section}{sub-section:createUser_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:createUser_prs|text=|trigger=button}{sub-section}{sub-section:createUser_prs|trigger=none|class=sIndent}username -- the username
password -- the user password
\[userUID\] -- the userUID to use
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:createUser_ret|text=|trigger=button}{sub-section}{sub-section:createUser_ret|trigger=none|class=sIndent}[Object] -- the userUID the created userUID, will be same if provided{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:createUser_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:createUser_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:createUser_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:createUser_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:createUser_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:createUser_sam|trigger=none}{code:language=javascript}
var removeUser = true;
//create a user
var uid = security.createUser('myusername', 'mypassword');
if (uid) //test if user was created
{
	// Get all the groups
	var set = security.getGroups();
	for(var p = 1 ; p <= set.getMaxRowIndex() ; p++)
	{
		// output name of the group
		application.output(set.getValue(p, 2));
		// add user to group
		security.addUserToGroup(uid, set.getValue(p,2));
	}
	// if not remove user, remove user from all the groups
	if(!removeUser)
	{
		// get now all the groups that that users has (all if above did go well)
		var set =security.getUserGroups(uid);
		for(var p = 1;p<=set.getMaxRowIndex();p++)
		{
			// output name of the group
			application.output(set.getValue(p, 2));
			// remove the user from the group
			security.removeUserFromGroup(uid, set.getValue(p,2));
		}
	}
	else
	{
		// delete the user (the user will be removed from the groups)
		security.deleteUser(uid);
	}
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=deleteGroup|class=node}{tr:id=name}{td}h6.deleteGroup{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}deleteGroup{span}{span:id=iets|style=float: left;}\(groupName){span}{td}{tr}{tr:id=des}{td}{sub-section:deleteGroup_des|text=|trigger=button}{sub-section}{sub-section:deleteGroup_des|trigger=none|class=sIndent}Deletes a group, returns true if no error was reported.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:deleteGroup_snc|text=|trigger=button}{sub-section}{sub-section:deleteGroup_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:deleteGroup_prs|text=|trigger=button}{sub-section}{sub-section:deleteGroup_prs|trigger=none|class=sIndent}\{[Object]} groupName -- the name of the group to delete
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:deleteGroup_ret|text=|trigger=button}{sub-section}{sub-section:deleteGroup_ret|trigger=none|class=sIndent}[Boolean] -- true if deleted{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:deleteGroup_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteGroup_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:deleteGroup_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteGroup_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:deleteGroup_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteGroup_sam|trigger=none}{code:language=javascript}
var removeUser = true;
//create a user
var uid = security.createUser('myusername', 'mypassword');
if (uid) //test if user was created
{
	// Get all the groups
	var set = security.getGroups();
	for(var p = 1 ; p <= set.getMaxRowIndex() ; p++)
	{
		// output name of the group
		application.output(set.getValue(p, 2));
		// add user to group
		security.addUserToGroup(uid, set.getValue(p,2));
	}
	// if not remove user, remove user from all the groups
	if(!removeUser)
	{
		// get now all the groups that that users has (all if above did go well)
		var set =security.getUserGroups(uid);
		for(var p = 1;p<=set.getMaxRowIndex();p++)
		{
			// output name of the group
			application.output(set.getValue(p, 2));
			// remove the user from the group
			security.removeUserFromGroup(uid, set.getValue(p,2));
		}
	}
	else
	{
		// delete the user (the user will be removed from the groups)
		security.deleteUser(uid);
	}
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=deleteUser|class=node}{tr:id=name}{td}h6.deleteUser{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}deleteUser{span}{span:id=iets|style=float: left;}\(userUID){span}{td}{tr}{tr:id=des}{td}{sub-section:deleteUser_des|text=|trigger=button}{sub-section}{sub-section:deleteUser_des|trigger=none|class=sIndent}Deletes an user. returns true if no error was reported.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:deleteUser_snc|text=|trigger=button}{sub-section}{sub-section:deleteUser_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:deleteUser_prs|text=|trigger=button}{sub-section}{sub-section:deleteUser_prs|trigger=none|class=sIndent}\{[Object]} userUID -- The UID of the user to be deleted.
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:deleteUser_ret|text=|trigger=button}{sub-section}{sub-section:deleteUser_ret|trigger=none|class=sIndent}[Boolean] -- true if the user is successfully deleted.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:deleteUser_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteUser_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:deleteUser_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteUser_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:deleteUser_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteUser_sam|trigger=none}{code:language=javascript}
var removeUser = true;
//create a user
var uid = security.createUser('myusername', 'mypassword');
if (uid) //test if user was created
{
	// Get all the groups
	var set = security.getGroups();
	for(var p = 1 ; p <= set.getMaxRowIndex() ; p++)
	{
		// output name of the group
		application.output(set.getValue(p, 2));
		// add user to group
		security.addUserToGroup(uid, set.getValue(p,2));
	}
	// if not remove user, remove user from all the groups
	if(!removeUser)
	{
		// get now all the groups that that users has (all if above did go well)
		var set =security.getUserGroups(uid);
		for(var p = 1;p<=set.getMaxRowIndex();p++)
		{
			// output name of the group
			application.output(set.getValue(p, 2));
			// remove the user from the group
			security.removeUserFromGroup(uid, set.getValue(p,2));
		}
	}
	else
	{
		// delete the user (the user will be removed from the groups)
		security.deleteUser(uid);
	}
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getClientID|class=node}{tr:id=name}{td}h6.getClientID{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}getClientID{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getClientID_des|text=|trigger=button}{sub-section}{sub-section:getClientID_des|trigger=none|class=sIndent}Returns the client ID.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getClientID_snc|text=|trigger=button}{sub-section}{sub-section:getClientID_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getClientID_prs|text=|trigger=button}{sub-section}{sub-section:getClientID_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getClientID_ret|text=|trigger=button}{sub-section}{sub-section:getClientID_ret|trigger=none|class=sIndent}[String] -- the clientId as seen on the server admin page{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getClientID_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getClientID_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getClientID_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getClientID_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getClientID_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getClientID_sam|trigger=none}{code:language=javascript}
var clientId = security.getClientID()
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getElementUUIDs|class=node}{tr:id=name}{td}h6.getElementUUIDs{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSDataSet]{span}{span:id=iets|style=float: left; font-weight: bold;}getElementUUIDs{span}{span:id=iets|style=float: left;}\(formname){span}{td}{tr}{tr:id=des}{td}{sub-section:getElementUUIDs_des|text=|trigger=button}{sub-section}{sub-section:getElementUUIDs_des|trigger=none|class=sIndent}Returns the form elements UUID's as dataset, the one with no name is the form itself.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getElementUUIDs_snc|text=|trigger=button}{sub-section}{sub-section:getElementUUIDs_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:getElementUUIDs_prs|text=|trigger=button}{sub-section}{sub-section:getElementUUIDs_prs|trigger=none|class=sIndent}\{[String]} formname -- the formname to retieve the dataset for
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:getElementUUIDs_ret|text=|trigger=button}{sub-section}{sub-section:getElementUUIDs_ret|trigger=none|class=sIndent}[JSDataSet] -- dataset with element info{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getElementUUIDs_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getElementUUIDs_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getElementUUIDs_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getElementUUIDs_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getElementUUIDs_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getElementUUIDs_sam|trigger=none}{code:language=javascript}
var formElementsUUIDDataSet = security.getElementUUIDs('orders_form');
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getGroups|class=node}{tr:id=name}{td}h6.getGroups{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSDataSet]{span}{span:id=iets|style=float: left; font-weight: bold;}getGroups{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getGroups_des|text=|trigger=button}{sub-section}{sub-section:getGroups_des|trigger=none|class=sIndent}Get all the groups (returns a dataset).
first id column is depricated!, use only the group name column.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getGroups_snc|text=|trigger=button}{sub-section}{sub-section:getGroups_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getGroups_prs|text=|trigger=button}{sub-section}{sub-section:getGroups_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getGroups_ret|text=|trigger=button}{sub-section}{sub-section:getGroups_ret|trigger=none|class=sIndent}[JSDataSet] -- dataset with all the groups{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getGroups_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getGroups_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getGroups_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getGroups_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getGroups_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getGroups_sam|trigger=none}{code:language=javascript}
var removeUser = true;
//create a user
var uid = security.createUser('myusername', 'mypassword');
if (uid) //test if user was created
{
	// Get all the groups
	var set = security.getGroups();
	for(var p = 1 ; p <= set.getMaxRowIndex() ; p++)
	{
		// output name of the group
		application.output(set.getValue(p, 2));
		// add user to group
		security.addUserToGroup(uid, set.getValue(p,2));
	}
	// if not remove user, remove user from all the groups
	if(!removeUser)
	{
		// get now all the groups that that users has (all if above did go well)
		var set =security.getUserGroups(uid);
		for(var p = 1;p<=set.getMaxRowIndex();p++)
		{
			// output name of the group
			application.output(set.getValue(p, 2));
			// remove the user from the group
			security.removeUserFromGroup(uid, set.getValue(p,2));
		}
	}
	else
	{
		// delete the user (the user will be removed from the groups)
		security.deleteUser(uid);
	}
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getSystemUserName|class=node}{tr:id=name}{td}h6.getSystemUserName{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}getSystemUserName{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getSystemUserName_des|text=|trigger=button}{sub-section}{sub-section:getSystemUserName_des|trigger=none|class=sIndent}Retrieves the username of the currently logged in user on operating system level.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getSystemUserName_snc|text=|trigger=button}{sub-section}{sub-section:getSystemUserName_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getSystemUserName_prs|text=|trigger=button}{sub-section}{sub-section:getSystemUserName_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getSystemUserName_ret|text=|trigger=button}{sub-section}{sub-section:getSystemUserName_ret|trigger=none|class=sIndent}[String] -- the os user name{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getSystemUserName_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSystemUserName_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getSystemUserName_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSystemUserName_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getSystemUserName_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSystemUserName_sam|trigger=none}{code:language=javascript}
//gets the current os username
var osUserName = security.getSystemUserName();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getUserGroups|class=node}{tr:id=name}{td}h6.getUserGroups{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSDataSet]{span}{span:id=iets|style=float: left; font-weight: bold;}getUserGroups{span}{span:id=iets|style=float: left;}\(\[userUID\]){span}{td}{tr}{tr:id=des}{td}{sub-section:getUserGroups_des|text=|trigger=button}{sub-section}{sub-section:getUserGroups_des|trigger=none|class=sIndent}Get all the groups of the current user, finds the goups for given user UID if passed as parameter.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getUserGroups_snc|text=|trigger=button}{sub-section}{sub-section:getUserGroups_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:getUserGroups_prs|text=|trigger=button}{sub-section}{sub-section:getUserGroups_prs|trigger=none|class=sIndent}\{[Object]} \[userUID\] -- to retrieve the user groups
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:getUserGroups_ret|text=|trigger=button}{sub-section}{sub-section:getUserGroups_ret|trigger=none|class=sIndent}[JSDataSet] -- dataset with groupnames{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getUserGroups_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getUserGroups_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getUserGroups_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getUserGroups_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getUserGroups_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getUserGroups_sam|trigger=none}{code:language=javascript}
//get all the users in the security settings (Returns a JSDataset)
var dsUsers = security.getUsers()

//loop through each user to get their group
//The getValue call is (row,column) where column 1 == id and 2 == name
for(var i=1 ; i<=dsUsers.getMaxRowIndex() ; i++)
{
	//print to the output debugger tab: "user: " and the username
	application.output("user:" + dsUsers.getValue(i,2));

	//set p to the user group for the current user
	var p = security.getUserGroups(dsUsers.getValue(i,1));

	for(k=1;k<=p.getMaxRowIndex();k++)
	{
		//print to the output debugger tab: "group" and the group(s)
		//the user belongs to
		application.output("group: " + p.getValue(k,2));
	}
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getUserName|class=node}{tr:id=name}{td}h6.getUserName{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}getUserName{span}{span:id=iets|style=float: left;}\(\[userUID\]){span}{td}{tr}{tr:id=des}{td}{sub-section:getUserName_des|text=|trigger=button}{sub-section}{sub-section:getUserName_des|trigger=none|class=sIndent}Get the current user name (null if not logged in), finds the user name for given user UID if passed as parameter.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getUserName_snc|text=|trigger=button}{sub-section}{sub-section:getUserName_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:getUserName_prs|text=|trigger=button}{sub-section}{sub-section:getUserName_prs|trigger=none|class=sIndent}\[userUID\] -- to retrieve the name
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:getUserName_ret|text=|trigger=button}{sub-section}{sub-section:getUserName_ret|trigger=none|class=sIndent}[String] -- the user name{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getUserName_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getUserName_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getUserName_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getUserName_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getUserName_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getUserName_sam|trigger=none}{code:language=javascript}
//gets the current loggedIn username
var userName = security.getUserName();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getUserUID|class=node}{tr:id=name}{td}h6.getUserUID{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}getUserUID{span}{span:id=iets|style=float: left;}\(\[username\]){span}{td}{tr}{tr:id=des}{td}{sub-section:getUserUID_des|text=|trigger=button}{sub-section}{sub-section:getUserUID_des|trigger=none|class=sIndent}Get the current user UID (null if not logged in), finds the userUID for given user\_name if passed as parameter.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getUserUID_snc|text=|trigger=button}{sub-section}{sub-section:getUserUID_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:getUserUID_prs|text=|trigger=button}{sub-section}{sub-section:getUserUID_prs|trigger=none|class=sIndent}\[username\] -- the username to find the userUID for
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:getUserUID_ret|text=|trigger=button}{sub-section}{sub-section:getUserUID_ret|trigger=none|class=sIndent}[String] -- the userUID{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getUserUID_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getUserUID_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getUserUID_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getUserUID_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getUserUID_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getUserUID_sam|trigger=none}{code:language=javascript}
//gets the current loggedIn username
var userName = security.getUserName(); 
//gets the uid of the given username
var userUID = security.getUserUID(userName);
//is the same as above 
//var my_userUID = security.getUserUID();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getUsers|class=node}{tr:id=name}{td}h6.getUsers{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSDataSet]{span}{span:id=iets|style=float: left; font-weight: bold;}getUsers{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getUsers_des|text=|trigger=button}{sub-section}{sub-section:getUsers_des|trigger=none|class=sIndent}Get all the users in the security settings (returns a dataset).{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getUsers_snc|text=|trigger=button}{sub-section}{sub-section:getUsers_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getUsers_prs|text=|trigger=button}{sub-section}{sub-section:getUsers_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getUsers_ret|text=|trigger=button}{sub-section}{sub-section:getUsers_ret|trigger=none|class=sIndent}[JSDataSet] -- dataset with all the users{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getUsers_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getUsers_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getUsers_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getUsers_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getUsers_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getUsers_sam|trigger=none}{code:language=javascript}
//get all the users in the security settings (Returns a JSDataset)
var dsUsers = security.getUsers()

//loop through each user to get their group
//The getValue call is (row,column) where column 1 == id and 2 == name
for(var i=1 ; i<=dsUsers.getMaxRowIndex() ; i++)
{
	//print to the output debugger tab: "user: " and the username
	application.output("user:" + dsUsers.getValue(i,2));

	//set p to the user group for the current user
	var p = security.getUserGroups(dsUsers.getValue(i,1));

	for(k=1;k<=p.getMaxRowIndex();k++)
	{
		//print to the output debugger tab: "group" and the group(s)
		//the user belongs to
		application.output("group: " + p.getValue(k,2));
	}
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=login|class=node}{tr:id=name}{td}h6.login{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}login{span}{span:id=iets|style=float: left;}\(display_username, a_userUID, groups){span}{td}{tr}{tr:id=des}{td}{sub-section:login_des|text=|trigger=button}{sub-section}{sub-section:login_des|trigger=none|class=sIndent}Login to be able to leave the solution loginForm.

Example: Group names may be received from LDAP (Lightweight Directory Access Protocol) \- a standard protocol used in web browsers and email applications to enable lookup queries that access a directory listing.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:login_snc|text=|trigger=button}{sub-section}{sub-section:login_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:login_prs|text=|trigger=button}{sub-section}{sub-section:login_prs|trigger=none|class=sIndent}\{[String]} display_username -- the user display name, like 'James Webb'
\{[Object]} a_userUID -- the user UID to process login for
\{[String]\[]} groups -- the groups array
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:login_ret|text=|trigger=button}{sub-section}{sub-section:login_ret|trigger=none|class=sIndent}[Boolean] -- true if loggedin{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:login_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:login_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:login_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:login_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:login_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:login_sam|trigger=none}{code:language=javascript}
var groups = new Array()
groups[0] = 'Administrators'; //normally these groups are for example received from LDAP
var user_uid = globals.email; //also this uid might be received from external authentication method
var ok =  security.login(globals.username, user_uid , groups)
if (!ok)
{
	plugins.dialogs.showErrorDialog('Login failure',  'Already logged in? or no user_uid/groups specified?', 'OK')
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=logout|class=node}{tr:id=name}{td}h6.logout{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}logout{span}{span:id=iets|style=float: left;}\(\[solutionToLoad\], \[method\], \[argument\]){span}{td}{tr}{tr:id=des}{td}{sub-section:logout_des|text=|trigger=button}{sub-section}{sub-section:logout_des|trigger=none|class=sIndent}Logout the current user.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:logout_snc|text=|trigger=button}{sub-section}{sub-section:logout_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:logout_prs|text=|trigger=button}{sub-section}{sub-section:logout_prs|trigger=none|class=sIndent}\[solutionToLoad\] -- the solution to load after logout
\[method\] -- the method to run in the solution to load
\[argument\] -- the argument to pass to the method to run
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:logout_ret|text=|trigger=button}{sub-section}{sub-section:logout_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:logout_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:logout_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:logout_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:logout_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:logout_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:logout_sam|trigger=none}{code:language=javascript}
var groups = new Array();
	groups[0] = 'testgroup';
	var ok =  security.login('user1', security.getUserUID('user1') , groups)
	if (!ok) 
	{
		plugins.dialogs.showErrorDialog('Login failure',  'Already logged in? or no user_uid/groups specified?', 'OK')
 	}
	else 
	{ 
 		plugins.dialogs.showInfoDialog('Logged in','Logged in','OK') 
	} 
	security.logout();
	//security.logout('solution_name');//log out and open solution 'solution_name'
	//security.logout('solution_name','global_method_name','my_argument');//log out, open solution 'solution_name', call global method 'global_method_name' with argument 'my_argument'
	//note: specifying a solution will not work in developer due to debugger dependencies
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=removeUserFromGroup|class=node}{tr:id=name}{td}h6.removeUserFromGroup{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}removeUserFromGroup{span}{span:id=iets|style=float: left;}\(a_userUID, groupName){span}{td}{tr}{tr:id=des}{td}{sub-section:removeUserFromGroup_des|text=|trigger=button}{sub-section}{sub-section:removeUserFromGroup_des|trigger=none|class=sIndent}Removes an user from a group.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:removeUserFromGroup_snc|text=|trigger=button}{sub-section}{sub-section:removeUserFromGroup_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:removeUserFromGroup_prs|text=|trigger=button}{sub-section}{sub-section:removeUserFromGroup_prs|trigger=none|class=sIndent}\{[Object]} a_userUID -- the user UID to be removed
\{[Object]} groupName -- the group to remove from
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:removeUserFromGroup_ret|text=|trigger=button}{sub-section}{sub-section:removeUserFromGroup_ret|trigger=none|class=sIndent}[Boolean] -- true if removed{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:removeUserFromGroup_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:removeUserFromGroup_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:removeUserFromGroup_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:removeUserFromGroup_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:removeUserFromGroup_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:removeUserFromGroup_sam|trigger=none}{code:language=javascript}
var removeUser = true;
//create a user
var uid = security.createUser('myusername', 'mypassword');
if (uid) //test if user was created
{
	// Get all the groups
	var set = security.getGroups();
	for(var p = 1 ; p <= set.getMaxRowIndex() ; p++)
	{
		// output name of the group
		application.output(set.getValue(p, 2));
		// add user to group
		security.addUserToGroup(uid, set.getValue(p,2));
	}
	// if not remove user, remove user from all the groups
	if(!removeUser)
	{
		// get now all the groups that that users has (all if above did go well)
		var set =security.getUserGroups(uid);
		for(var p = 1;p<=set.getMaxRowIndex();p++)
		{
			// output name of the group
			application.output(set.getValue(p, 2));
			// remove the user from the group
			security.removeUserFromGroup(uid, set.getValue(p,2));
		}
	}
	else
	{
		// delete the user (the user will be removed from the groups)
		security.deleteUser(uid);
	}
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=setPassword|class=node}{tr:id=name}{td}h6.setPassword{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}setPassword{span}{span:id=iets|style=float: left;}\(a_userUID, password){span}{td}{tr}{tr:id=des}{td}{sub-section:setPassword_des|text=|trigger=button}{sub-section}{sub-section:setPassword_des|trigger=none|class=sIndent}Set a new password for the given userUID.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:setPassword_snc|text=|trigger=button}{sub-section}{sub-section:setPassword_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:setPassword_prs|text=|trigger=button}{sub-section}{sub-section:setPassword_prs|trigger=none|class=sIndent}\{[Object]} a_userUID -- the userUID to set the new password for
\{[String]} password -- the new password
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:setPassword_ret|text=|trigger=button}{sub-section}{sub-section:setPassword_ret|trigger=none|class=sIndent}[Boolean] -- true if changed{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:setPassword_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setPassword_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:setPassword_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setPassword_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:setPassword_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setPassword_sam|trigger=none}{code:language=javascript}
if(security.checkPassword(security.getUserUID(), 'password1'))
{
	security.setPassword(security.getUserUID(), 'password2')
}
else
{
	application.output('wrong password')
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=setSecuritySettings|class=node}{tr:id=name}{td}h6.setSecuritySettings{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}setSecuritySettings{span}{span:id=iets|style=float: left;}\(dataset){span}{td}{tr}{tr:id=des}{td}{sub-section:setSecuritySettings_des|text=|trigger=button}{sub-section}{sub-section:setSecuritySettings_des|trigger=none|class=sIndent}Sets the security settings; the entries contained in the given dataset will override those contained in the current security settings.

NOTE: The security.getElementUUIDs and security.setSecuritySettings functions can be used to define custom security that overrides Servoy security. 
For additional information see the function security.getElementUUIDs.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:setSecuritySettings_snc|text=|trigger=button}{sub-section}{sub-section:setSecuritySettings_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:setSecuritySettings_prs|text=|trigger=button}{sub-section}{sub-section:setSecuritySettings_prs|trigger=none|class=sIndent}\{[Object]} dataset -- the dataset with security settings
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:setSecuritySettings_ret|text=|trigger=button}{sub-section}{sub-section:setSecuritySettings_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:setSecuritySettings_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setSecuritySettings_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:setSecuritySettings_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setSecuritySettings_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:setSecuritySettings_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setSecuritySettings_sam|trigger=none}{code:language=javascript}
var colNames = new Array();
colNames[0] = 'uuid';
colNames[1] = 'flags';
var dataset = databaseManager.createEmptyDataSet(0,colNames);

var row = new Array();
row[0] = '413a4d69-becb-4ae4-8fdd-980755d6a7fb';//normally retreived via security.getElementUUIDs(...)
row[1] = JSSecurity.VIEWABLE|JSSecurity.ACCESSIBLE; // use bitwise 'or' for both
dataset.addRow(row);//setting element security

row = new Array();
row[0] = 'example_data.orders';
row[1] = JSSecurity.READ|JSSecurity.INSERT|JSSecurity.UPDATE|JSSecurity.DELETE|JSSecurity.TRACKING; //use bitwise 'or' for multiple flags
dataset.addRow(row);//setting table security

security.setSecuritySettings(dataset);//to be called in solution startup method
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=setUserUID|class=node}{tr:id=name}{td}h6.setUserUID{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}setUserUID{span}{span:id=iets|style=float: left;}\(a_userUID, newUserUID){span}{td}{tr}{tr:id=des}{td}{sub-section:setUserUID_des|text=|trigger=button}{sub-section}{sub-section:setUserUID_des|trigger=none|class=sIndent}Set a new userUID for the given userUID.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:setUserUID_snc|text=|trigger=button}{sub-section}{sub-section:setUserUID_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:setUserUID_prs|text=|trigger=button}{sub-section}{sub-section:setUserUID_prs|trigger=none|class=sIndent}\{[Object]} a_userUID -- the userUID to set the new user UID for
\{[String]} newUserUID -- the new user UID
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:setUserUID_ret|text=|trigger=button}{sub-section}{sub-section:setUserUID_ret|trigger=none|class=sIndent}[Boolean] -- true if changed{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:setUserUID_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setUserUID_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:setUserUID_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setUserUID_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:setUserUID_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setUserUID_sam|trigger=none}{code:language=javascript}
var removeUser = true;
//create a user
var uid = security.createUser('myusername', 'mypassword');
if (uid) //test if user was created
{
	// Get all the groups
	var set = security.getGroups();
	for(var p = 1 ; p <= set.getMaxRowIndex() ; p++)
	{
		// output name of the group
		application.output(set.getValue(p, 2));
		// add user to group
		security.addUserToGroup(uid, set.getValue(p,2));
	}
	// if not remove user, remove user from all the groups
	if(!removeUser)
	{
		// get now all the groups that that users has (all if above did go well)
		var set =security.getUserGroups(uid);
		for(var p = 1;p<=set.getMaxRowIndex();p++)
		{
			// output name of the group
			application.output(set.getValue(p, 2));
			// remove the user from the group
			security.removeUserFromGroup(uid, set.getValue(p,2));
		}
	}
	else
	{
		// delete the user (the user will be removed from the groups)
		security.deleteUser(uid);
	}
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}