Advertisement
Guest User

Untitled

a guest
Mar 14th, 2017
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.88 KB | None | 0 0
  1. var _users = {
  2.     "admin": {username:"admin", password: "1234", groups: [0, 1, 2]},
  3.     "sobakajozhec": {username:"sobakajozhec", password: "ekh228", groups: [1, 2]},
  4.     "patriot007": {username:"patriot007", password: "russiaFTW", groups: [1]}
  5. };
  6.  
  7. var _rights = [0,1,2,3,4,5,6,7,8,9];
  8.  
  9. var _groups = [
  10.     { id:0, groupname: "admin", access: [,,_rights[2]]},
  11.     { id:1, groupname: "manager", access: [_rights[0]]},
  12.     { id:2, groupname: "basic", access: [,_rights[1],,_rights[3]]}
  13. ];
  14.  
  15. var _sessions = {};
  16. var _currentUser;
  17.  
  18.  
  19. //function users(): Array<Any> Возвращает массив всех пользователей.
  20. function users(){
  21.     return Object.values(_users);
  22. }
  23. //function createUser(username: String, password: String): Any Создает нового пользователя с указанным логином username и паролем password, возвращает созданного пользователя.
  24. function createUser(username, password)
  25. {
  26.     if (!(username in _users)){
  27.     _users[username] = { username: username, password: password, groups: [] };
  28.     }
  29.     return _users[username];
  30. }
  31. //function deleteUser(user: Any): undefined Удаляет пользователя user
  32. function deleteUser(user){
  33.   if(typeof user=='string'){
  34.     if(user in _users){
  35.       delete _users[user];
  36.     }
  37.   }
  38.   if(typeof user=='object'){
  39.     if(user.username in _users){
  40.       delete _users[user.username];
  41.     }
  42.   }
  43. }
  44. //function userGroups(user: Any): Array<Any> Возвращает массив групп, к которым принадлежит пользователь user
  45. function userGroups(user){
  46.   var user_groups=[]
  47.   for(var user_group in _groups){
  48.     if(typeof user=='object'){
  49.       if(user.username in _users){
  50.         if(user.groups.indexOf(_groups[user_group].id)>-1){
  51.           user_groups.push(_groups[user_group]);
  52.         }
  53.       }
  54.     }
  55.     if(typeof user=='string'){
  56.       if(user in _users){
  57.         if(_users[user].groups.indexOf(_groups[user_group].id)>-1){
  58.           user_groups.push(_groups[user_group]);
  59.         }
  60.       }
  61.     }
  62.   }
  63.   return user_groups;
  64. }
  65. //function addUserToGroup(user: Any, group: Any): undefined Добавляет пользователя user в группу group
  66. function addUserToGroup(user, group){
  67.   _users[user.username].groups.push(group.id);
  68. }
  69. //function removeUserFromGroup(user: Any, group: Any): undefined Удаляет пользователя user из группы group
  70. function removeUserFromGroup (user, group) {
  71.   for (var i = 0; i < users[user.username].groups.length; i++) {
  72.     if (users[user.username].groups[i] == group) {
  73.       users[user.username].groups.splice(i, 1);
  74.     }
  75.   }
  76. }
  77. //function rights(): Array<Any> Возвращает массив прав
  78. function rights(){
  79.   return _rights;
  80. }
  81. //function createRight(): Any Создает новое право и возвращает его
  82. function createRight(){
  83.        var num = _rights.length;
  84.        _rights[num] = num;
  85.       return num;
  86. }
  87. //function deleteRight(right: Any): undefined Удаляет право right
  88. function deleteRight(right) {
  89.   delete _rights[right];
  90. }
  91. //function addRightToGroup(right: Any, group: Any) : undefined Добавляет право right к группе group
  92. function addRightToGroup(right, group)
  93. {
  94.     _groups[group.id].access[right] = right;
  95. }
  96. //function removeRightFromGroup(right: Any, group: Any) : undefined Удаляет право right из группы group
  97. function removeRightFromGroup(right, group) {
  98.   delete _groups[group].access[right]
  99. }
  100. //function groups(): Array<Any> Возвращает массив групп
  101. function groups()
  102. {
  103.     return Object.values(_groups);
  104. }
  105. //function createGroup(): Any Создает новую группу и возвращает её.
  106. function createGroup(){
  107.   var num = _groups.length;
  108.        _groups[num] = { id: num, groupname: '', access: [rights[0]] };
  109.       return _groups[num];
  110. }
  111. //function deleteGroup(group: Any): undefined Удаляет группу group
  112. function deleteGroup(group){
  113.   delete groups[group.id];
  114. }
  115. //function groupRights(group: Any): Array<Any> Возвращает массив прав, которые принадлежат группе group
  116. function groupRights(group){
  117.   return _groups[group.id].access;
  118. }
  119.  
  120. function login(username, password)
  121. {
  122.   if(username in _users && _users[username].password === password && !(username in _sessions)){
  123.     _sessions[username] = 'logged';
  124.     _currentUser = username;
  125.     return true;
  126.   }
  127.   return false;
  128. }
  129.  
  130. function logout(){
  131.   delete _sessions[_currentUser];
  132.   _currentUser = undefined;
  133. }
  134.  
  135. function currentUser(){
  136.   return _users[_currentUser];
  137. }
  138.  
  139. function isAuthorized(user, right){
  140.   for( var groupId in _users[user.username].groups)
  141.   {
  142.     if(_groups[groupId].access[right] === right )
  143.     return true;
  144.   }
  145.   return false;
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement