Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var _users = {
- "admin": {username:"admin", password: "1234", groups: [0, 1, 2]},
- "sobakajozhec": {username:"sobakajozhec", password: "ekh228", groups: [1, 2]},
- "patriot007": {username:"patriot007", password: "russiaFTW", groups: [1]}
- };
- var _rights = [0,1,2,3,4,5,6,7,8,9];
- var _groups = [
- { id:0, groupname: "admin", access: [,,_rights[2]]},
- { id:1, groupname: "manager", access: [_rights[0]]},
- { id:2, groupname: "basic", access: [,_rights[1],,_rights[3]]}
- ];
- var _sessions = {};
- var _currentUser;
- //function users(): Array<Any> Возвращает массив всех пользователей.
- function users(){
- return Object.values(_users);
- }
- //function createUser(username: String, password: String): Any Создает нового пользователя с указанным логином username и паролем password, возвращает созданного пользователя.
- function createUser(username, password)
- {
- if (!(username in _users)){
- _users[username] = { username: username, password: password, groups: [] };
- }
- return _users[username];
- }
- //function deleteUser(user: Any): undefined Удаляет пользователя user
- function deleteUser(user){
- if(typeof user=='string'){
- if(user in _users){
- delete _users[user];
- }
- }
- if(typeof user=='object'){
- if(user.username in _users){
- delete _users[user.username];
- }
- }
- }
- //function userGroups(user: Any): Array<Any> Возвращает массив групп, к которым принадлежит пользователь user
- function userGroups(user){
- var user_groups=[]
- for(var user_group in _groups){
- if(typeof user=='object'){
- if(user.username in _users){
- if(user.groups.indexOf(_groups[user_group].id)>-1){
- user_groups.push(_groups[user_group]);
- }
- }
- }
- if(typeof user=='string'){
- if(user in _users){
- if(_users[user].groups.indexOf(_groups[user_group].id)>-1){
- user_groups.push(_groups[user_group]);
- }
- }
- }
- }
- return user_groups;
- }
- //function addUserToGroup(user: Any, group: Any): undefined Добавляет пользователя user в группу group
- function addUserToGroup(user, group){
- _users[user.username].groups.push(group.id);
- }
- //function removeUserFromGroup(user: Any, group: Any): undefined Удаляет пользователя user из группы group
- function removeUserFromGroup (user, group) {
- for (var i = 0; i < users[user.username].groups.length; i++) {
- if (users[user.username].groups[i] == group) {
- users[user.username].groups.splice(i, 1);
- }
- }
- }
- //function rights(): Array<Any> Возвращает массив прав
- function rights(){
- return _rights;
- }
- //function createRight(): Any Создает новое право и возвращает его
- function createRight(){
- var num = _rights.length;
- _rights[num] = num;
- return num;
- }
- //function deleteRight(right: Any): undefined Удаляет право right
- function deleteRight(right) {
- delete _rights[right];
- }
- //function addRightToGroup(right: Any, group: Any) : undefined Добавляет право right к группе group
- function addRightToGroup(right, group)
- {
- _groups[group.id].access[right] = right;
- }
- //function removeRightFromGroup(right: Any, group: Any) : undefined Удаляет право right из группы group
- function removeRightFromGroup(right, group) {
- delete _groups[group].access[right]
- }
- //function groups(): Array<Any> Возвращает массив групп
- function groups()
- {
- return Object.values(_groups);
- }
- //function createGroup(): Any Создает новую группу и возвращает её.
- function createGroup(){
- var num = _groups.length;
- _groups[num] = { id: num, groupname: '', access: [rights[0]] };
- return _groups[num];
- }
- //function deleteGroup(group: Any): undefined Удаляет группу group
- function deleteGroup(group){
- delete groups[group.id];
- }
- //function groupRights(group: Any): Array<Any> Возвращает массив прав, которые принадлежат группе group
- function groupRights(group){
- return _groups[group.id].access;
- }
- function login(username, password)
- {
- if(username in _users && _users[username].password === password && !(username in _sessions)){
- _sessions[username] = 'logged';
- _currentUser = username;
- return true;
- }
- return false;
- }
- function logout(){
- delete _sessions[_currentUser];
- _currentUser = undefined;
- }
- function currentUser(){
- return _users[_currentUser];
- }
- function isAuthorized(user, right){
- for( var groupId in _users[user.username].groups)
- {
- if(_groups[groupId].access[right] === right )
- return true;
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement