@iotize/tap
Version:
IoTize Device client for Javascript
116 lines • 6.89 kB
JavaScript
import { SPECIAL_USERS } from './default-config';
/**
* Utility class to build a configuration
*/
export class TapConfiguratorConfigBuilder {
constructor(_schema) {
this._schema = _schema;
}
get configData() {
if (!this._schema.config.data) {
this._schema.config.data = {};
}
return this._schema.config.data;
}
get profiles() {
if (!this.configData.profiles) {
this.configData.profiles = [];
}
return this.configData.profiles;
}
get tapConfig() {
if (!this._schema.config.tap) {
this._schema.config.tap = {};
}
return this._schema.config.tap;
}
/**
* @deprecated
* TODO move from here as factory method should not polute the class
*/
static default() {
return new TapConfiguratorConfigBuilder({
meta: {},
config: {
application: {
name: 'TAP',
},
version: '1.0.0',
tap: {
security: {
disableHardwareFactoryReset: false,
hashPassword: true,
disableLoginWithUID: false,
disableResourceFactoryReset: false,
scramActivated: false,
},
scram: {
hashIteration: 5000,
},
},
data: {
profiles: SPECIAL_USERS,
},
},
});
}
/**
* Set application name
* @param appName
*/
appName(appName) {
if (!this._schema.config.application) {
this._schema.config.application = {};
}
this._schema.config.application.name = appName;
return this;
}
/**
* Edit user identified by username
* If user does not it will be created with default values
* @param username
* @param editor
*/
user(username, editor) {
const userDataIndex = this.profiles.findIndex((p) => p.username === username);
let userData = userDataIndex >= 0 ? this.profiles[userDataIndex] : undefined;
if (!userData) {
// TODO check SpecialProfileConfig
userData = {
username,
lifeTime: 300,
password: username,
};
}
userData = editor(userData);
this.profiles[userDataIndex] = userData;
return this;
}
/**
* Enable/disable scram
* @param enabled true to enable scram
*/
scram(enabled) {
// TODO hash iteration count ?
if (!this.tapConfig.security) {
this.tapConfig.security = {
scramActivated: false,
disableHardwareFactoryReset: false,
hashPassword: true,
disableResourceFactoryReset: false,
disableLoginWithUID: false,
};
}
else {
this.tapConfig.security.scramActivated = enabled;
if (enabled) {
this.tapConfig.security.hashPassword = true;
}
}
return this;
}
build() {
return this._schema;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLWNvbmZpZy1zY2hlbWEtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2NvbmZpZ3VyYXRvci9zcmMvbGliL3RhcC1jb25maWctc2NoZW1hLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBT2pEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLDRCQUE0QjtJQUN2QyxZQUFvQixPQUE4QjtRQUE5QixZQUFPLEdBQVAsT0FBTyxDQUF1QjtJQUFHLENBQUM7SUFFdEQsSUFBWSxVQUFVO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztTQUMvQjtRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFZLFFBQVE7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztTQUMvQjtRQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQVksU0FBUztRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7U0FDOUI7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLE9BQU87UUFDbkIsT0FBTyxJ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