sheercms
Version:
Sheer Cliff CMS is a simple and powerful content management system (CMS) for Node JS.
145 lines (128 loc) • 4.53 kB
JavaScript
/*
Angular Service: User
*/
app.service('UserService', function($q, $http, DSCacheFactory) {
var self = this;
var userCache = DSCacheFactory('userCache', {
maxAge: 1800000, // Items added to this cache expire after 30 minutes.
cacheFlushInterval: 3600000, // This cache will clear itself every hour.
deleteOnExpire: 'aggressive', // Items will be deleted from this cache right when they expire.
storageMode: 'localStorage' // This cache will sync itself with `localStorage`.
});
self.getUsers = function(role, useCache) {
var d = $q.defer();
var url = '/cms/users/list?role=' + (role ? role : '');
var data = null;
if (useCache)
data = userCache.get(url);
if (data) {
d.resolve(data);
}
else {
$http({
url: url,
method: 'get',
params: {}}
).success(function (data) {
userCache.put(url, data);
d.resolve(data);
}).error(function (data, status) {
d.reject(data);
});
}
return d.promise;
};
self.saveUser = function(user, changePwd, isNewUser) {
var d = $q.defer();
var json = JSON.stringify(user);
var url = isNewUser === true ? "/cms/users/create" : "/cms/users/update";
$http.post(url, {data: json, changepwd: changePwd}).success(function(data) {
userCache.removeAll();
d.resolve(data);
}).error(function(data, status) {
d.reject(data);
});
return d.promise;
};
self.saveProfile = function(user, changePwd, isNewUser) {
var d = $q.defer();
var json = JSON.stringify(user);
var url = "/cms/users/updateProfile";
$http.post(url, {data: json, changepwd: changePwd}).success(function(data) {
userCache.removeAll();
d.resolve(data);
}).error(function(data, status) {
d.reject(data);
});
return d.promise;
};
self.deleteUser = function(username) {
var d = $q.defer();
$http.post("/cms/users/delete", {username: username}).success(function(data) {
userCache.removeAll();
d.resolve(data);
}).error(function(data, status) {
d.reject(data);
});
return d.promise;
};
});
app.service('RoleService', function($q, $http, DSCacheFactory) {
var self = this;
var roleCache = DSCacheFactory('roleCache', {
maxAge: 1800000, // Items added to this cache expire after 30 minutes.
cacheFlushInterval: 3600000, // This cache will clear itself every hour.
deleteOnExpire: 'aggressive', // Items will be deleted from this cache right when they expire.
storageMode: 'localStorage' // This cache will sync itself with `localStorage`.
});
self.getRoles = function(useCache) {
var d = $q.defer();
var url = '/cms/roles/list';
var data = null;
if (useCache)
data = roleCache.get(url);
if (data) {
d.resolve(data);
}
else {
$http({ url: url, method: 'get', params: {} }).success(function (data) {
roleCache.put(url, data);
d.resolve(data);
}).error(function (data, status) {
d.reject(data);
});
}
return d.promise;
};
self.createRole = function(name) {
var d = $q.defer();
$http.post("/cms/roles/create", {name: name}).success(function(data) {
roleCache.removeAll();
d.resolve(data);
}).error(function(data, status) {
d.reject(data);
});
return d.promise;
};
self.updateRole = function(role) {
var d = $q.defer();
var json = JSON.stringify(role);
$http.post("/cms/roles/update", {data: json}).success(function(data) {
roleCache.removeAll();
d.resolve(data);
}).error(function(data, status) {
d.reject(data);
});
return d.promise;
};
self.deleteRole = function(name) {
var d = $q.defer();
$http.post("/cms/roles/delete", {name: name}).success(function(data) {
roleCache.removeAll();
d.resolve(data);
}).error(function(data, status) {
d.reject(data);
});
return d.promise;
};
});