. . .

Access Control Module


The Access Control Module lets app developers to log visitors in or out. In the future, these visitors (or employees) will also be synced with LDAP.

Configuration

No special configuration is required.

Usage

The Access Control Module provides the class userAction. This class is used to log a visitor in or out. During this process, a time stamp is created automatically.

First, add a visitor named "John Doe".

Android
Visitor visitor = new Visitor();
visitor.setFirstName("John");
visitor.setLastName("Doe");
visitor.setAomFirstName("John");
visitor.setAomLastName("Doe");
visitor.setIsGuest(0L);
visitor.setCompany("Wayne Enterprise");
visitor.saveAsync(...);
Objective-C
Visitor *visitor= [Visitor new];
[visitor setFirstName:@"John"];
[visitor setLastName:@"Doe"];
[visitor setAomFirstName:@"John"];
[visitor setAomLastName:@"Doe"];
[visitor setIsGuest:1];
[visitor setCompany:@"Wayne Enterprise"];
[visitor saveAsyncWithBlock:^(NSError *error) {
if(error == FALSE)
{
//do nothing
}
}];
Swift
var visitor= Visitor()
visitor.firstName = "John"
visitor.lastName = "Doe"
visitor.aomFirstName = "John"
visitor.aomLastName = "Doe"];
visitor.isGuest = 1
visitor.company = "Wayne Enterprise"
visitor.save { (error) in
if error == nil {
//do nothing
}
}
JavaScript
var visitor=new Apiomat.Visitor();
visitor.setFirstName("John");
visitor.setLastName("Doe");
visitor.setAomFirstName("John");
visitor.setAomLastName("Doe");
visitor.setIsGuest("1");
visitor.setCompany("Wayne Enterprise");
var saveCB= {
onOk:function () {
console.log("Visitor saved");
},
onError:function(error) {
console.log(error);
}
};
visitor.save(saveCB);
TypeScript
const visitor = new Visitor();
visitor.firstName = "John";
visitor.lastName = "Doe";
visitor.aomFirstName = "John";
visitor.aomLastName = "Doe";
visitor.isGuest = "1";
visitor.company = "XYZ Enterprise";
await visitor.save();

Now we will log the visitor in.

Android
UserAction userAction = new UserAction();
userAction.setFirstName("John");
userAction.setLastName("Doe");
userAction.setAction("login");
userAction.saveAsync(...);
Objective-C
UserAction *userAction = [UserAction new];
[userAction setFirstName:@"John"];
[userAction setLastName:@"Doe"];
[userAction setAction:@"login"];
[userAction saveAsyncWithBlock:^(NSError *error) {
if(error == FALSE)
{
}
}];
Swift
var userAction = UserAction()
userAction.firstName = "John"
userAction.lastName:@"Doe"
userAction.action = "login"
userAction.save { (error) in
if error == nil {
}
}
JavaScript
var userAction=new Apiomat.UserAction();
userAction.setFirstName("John");
userAction.setLastName("Doe");
userAction.setAction("login");
var saveCB= {
onOk:function () {
console.log("Visitor logged in");
},
onError:function(error) {
console.log(error);
}
};
userAction.save(saveCB);
TypeScript
const userAction = new UserAction();
userAction.firstName = "John";
userAction.lastName = "Doe";
userAction.action = "login";
await userAction.save();

When the visitor (John Doe) leaves the office, we will log him out.

Android
UserAction userAction = new UserAction();
userAction.setFirstName("John");
userAction.setLastName("Doe");
userAction.setAction("logout");
userAction.saveAsync(...);
Objective-C
UserAction *userAction = [UserAction new];
[userAction setFirstName:@"John"];
[userAction setLastName:@"Doe"];
[userAction setAction:@"logout"];
[userAction saveAsyncWithBlock:^(NSError *error) {
if(error == FALSE)
{
}
}];
Swift
var userAction = UserAction()
userAction.firstName = "John"
userAction.lastName = "Doe
userAction.action = "logout"
userAction.save { (error) in
if error == nil {
}
}
JavaScript
var userAction=new Apiomat.UserAction();
userAction.setFirstName("John");
userAction.setLastName("Doe");
userAction.setAction("logout");
var saveCB= {
onOk:function () {
console.log("Visitor logged out");
},
onError:function(error) {
console.log(error);
}
};
userAction.save(saveCB);
TypeScript
const userAction = new UserAction();
userAction.firstName = "John";
userAction.lastName = "Doe";
userAction.action = "logout";
await userAction.save();

The visitor's timestamp object is updated after logging in and logging out.

{
"@type": "AccessControl$Timestamp",
"createdAt": 1497967202285,
"lastModifiedAt": 1497970912116,
"id": "59492a62dc5ecc33c19dacd5",
"applicationName": "AccessControl",
"moduleName": "AccessControl",
"allowedRolesRead": [],
"allowedRolesWrite": [],
"allowedRolesGrant": [],
"restrictResourceAccess": false,
"referencedHrefs": {
"visitor": [
"http://localhost/yambas/rest/apps/AccessControl/models/AccessControl/Visitor/594927dedc5ecc33c19dacd1"
]
},
"allowedRolesReadFromClass": [],
"allowedRolesWriteFromClass": [],
"allowedRolesCreateFromClass": [],
"allowedRolesGrantFromClass": [],
"restrictResourceAccessFromClass": false,
"href": "http://localhost/yambas/rest/apps/AccessControl/models/AccessControl/Timestamp/59492a62dc5ecc33c19dacd5",
"allowedRolesReadFromObject": [],
"allowedRolesWriteFromObject": [],
"allowedRolesGrantFromObject": [],
"restrictResourceAccessFromObject": false,
"checkIn": 1497967202286,
"checkOut": 1497970912105,
"diffTimestamp": "1h 1m 49s ",
"diffTimestampHour": 1,
"diffTimestampMinute": 1,
"diffTimestampSecond": 49,
"visitorPlain": "John Doe",
"visitorHref": "http://localhost/yambas/rest/apps/AccessControl/models/AccessControl/Timestamp/59492a62dc5ecc33c19dacd5/visitor"
}

This JSON object is the timestamp, which the checkIn and CheckOut times.