Guest User

Untitled

a guest
Aug 2nd, 2018
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TCL 1.37 KB | None | 0 0
  1. proc resetUserSession {User} {
  2.  set ::computerlevel($user) {}
  3. }
  4.  
  5. array set ::label {public 0 internal 1 internal-registrar 15 internal-hr 23 internal-web 27 internal-developer 29 confidential 31 confidential-hr 63 secret 127}
  6.  
  7. proc join {labelone labeltwo} {
  8. set a $::label(labelone)
  9. set b $::label(labeltwo)
  10. set c [expr $a | $b]
  11. if {$c == 0} {
  12.   puts "0 public"
  13. }
  14. elseif {$c == 1} {
  15.   puts "1 internal"
  16. }
  17. elseif {$c == 15} {
  18.   puts "15 internal-registrar"
  19. }
  20. elseif {$c == 23} {
  21.   puts "23 internal-hr"
  22. }
  23. elseif {$c == 27} {
  24.   puts "27 internal-web"
  25. }
  26. elseif {$c == 29} {
  27.   puts "29 internal-developer"
  28. }
  29. elseif {$c == 31} {
  30.   puts "31 confidential"
  31. }
  32. elseif {$c == 63} {
  33.   puts "63 confidential-hr"
  34. }
  35. elseif {$c == 127} {
  36.   puts "127 secret"
  37. }
  38. else {
  39.   puts "0 public"
  40. }
  41. }
  42.  
  43. proc canIAccess {user file access} {
  44.  set x $::label($::userlevel($user))
  45.  set y $::label($::classification($file))
  46.  set z $::label($::computerlevel($user))
  47.  if {$x >= $y} {
  48.    if {{$access == "w"} && $y < $z} {
  49.      return 0
  50.    }
  51.    else {return 1}
  52.    if{{$access == "r"} && $y < $z} {
  53.      return 0
  54.    }
  55.    else {return 1}
  56.  }
  57. }
  58.  
  59. proc access {user file access} {
  60.  set m $::label($::classification($file))
  61.  set n $::label($::computerlevel($user))
  62.   if{canIAccess($user $file $access) == 1} {
  63.     join $m $n
  64.   }
  65.   else {
  66.     puts "Cannot access file. Sorry."
  67.   }
  68. }
Add Comment
Please, Sign In to add comment