diffusion
Version:
Diffusion JavaScript client
33 lines (29 loc) • 1.24 kB
JavaScript
var AuthenticationResponse = require('services/security/authentication-response');
var TypeCode = require('services/security/authentication-response').TypeCode;
var BEES = require('serialisers/byte-encoded-enum-serialiser');
var Codec = require('io/codec');
module.exports = {
read : function(bis) {
var type = BEES.read(bis, TypeCode);
switch (type) {
case TypeCode.ABSTAIN :
return AuthenticationResponse.ABSTAIN;
case TypeCode.ALLOW :
return AuthenticationResponse.ALLOW;
case TypeCode.ALLOW_WITH_RESULT :
return AuthenticationResponse.allow({
roles : Codec.readCollection(bis, Codec.readString),
properties : Codec.readDictionary(bis, Codec.readString)
});
default:
return AuthenticationResponse.DENY;
}
},
write : function(bos, response) {
BEES.write(bos, response.type);
if (response.type === TypeCode.ALLOW_WITH_RESULT) {
Codec.writeCollection(bos, response.result.roles, Codec.writeString);
Codec.writeDictionary(bos, response.result.properties, Codec.writeString);
}
}
};