Guest User

Computer Craft User Database

a guest
Apr 22nd, 2012
2,869
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.93 KB | None | 0 0
  1. --Code by OutlawBlue9
  2. --Thanks to Advent and OminousPenguin of the ComputerCraft Forums for advice and tutalage
  3. --Thanks to Liraal of the ComputerCraft Forums for his tutorial "A quick guide through menu making"
  4.  
  5.  
  6. --os.pullEvent = os.pullEventRaw --Turned off for debugging purposes
  7. version = "v0.2"
  8. userlist = {}
  9. users = {}
  10. status = "Logged Out"
  11. currentuser = "New User"
  12. loginid = nil
  13. loginpass = nil
  14. attempts=0
  15. adminmenu = {}
  16. usermenu = {}
  17. adminmenu = {"Option 1", "Option 2", "Option 3", "Log Out", "*Add User*", "*Add Admin*", "*Remove User*", "*Display Users*"}
  18. usermenu = {"Option 1", "Option 2", "Option 3", "Log Out"}
  19.  
  20. function homescreen()
  21.         term.clear()
  22.         term.setCursorPos(1,1)
  23.         print("Running OutSec "..version.."                      ".. textutils.formatTime( os.time(), false)) --currently displays Minecraft time, not real time
  24.         print("Status: "..status)
  25.         if status == "Logged In"
  26.             then
  27.                 term.setCursorPos(1,3)
  28.                 print("User: " ..currentuser)
  29.         end
  30.         print(string.rep("*", 49))
  31.         term.setCursorPos(1,10)
  32. end
  33.  
  34. function getInput(intype, character)
  35.     write(intype)
  36.     input = read(character)
  37.     return input
  38. end
  39.  
  40. function newuser(admin)
  41.             homescreen()   
  42.                 if admin == true
  43.                     then
  44.                         print("Please register Admin:")
  45.                     else
  46.                         print("Please register User:")
  47.                 end
  48.                
  49.                
  50.                 while true do
  51.                     homescreen()
  52.                     newusername = getInput("Username:")
  53.                     if userlist[newusername] == nil
  54.                         then
  55.                             break
  56.                         else
  57.                             print("Username already taken, please try again.")
  58.                             sleep(2)
  59.                     end
  60.                 end
  61.                        
  62.                 newpassword = getInput("Password:", "*")
  63.                 homescreen()
  64.                 print("Username: "..newusername)
  65.                 print("Password: "..newpassword)
  66.                 print("Confirm?[Y/N]")
  67.                 local event, k1 = os.pullEvent("char")
  68.                
  69.                 if k1 == "y"
  70.                     then
  71.                         table.insert(userlist, newusername)
  72.                         table.insert(users, newusername)
  73.                         userlist[newusername] = {}
  74.                         table.insert(userlist[newusername], "password")
  75.                         userlist[newusername].password = newpassword
  76.                         table.insert(userlist[newusername], "adminstatus")
  77.                         userlist[newusername].adminstatus = admin
  78.                         home()
  79.                     elseif k1 == "n" then
  80.                         newuser()
  81.                 end
  82. end
  83.  
  84. function login()
  85.                 homescreen()
  86.                 loginid = getInput("Username:")
  87.                 if userlist[loginid] == nil
  88.                     then
  89.                         print("Invalid Username. Please try again.")
  90.                         sleep(2)
  91.                         login()
  92.                 end
  93. end
  94.  
  95. function password()
  96.     for attempts=0, 2, 1 do
  97.         if attempts > 0
  98.             then
  99.                 term.setCursorPos(1,9)
  100.                 print("Incorrect Password. ("..3-attempts.."/3 attempts remaining.)")
  101.         end
  102.         loginpass = getInput("Password:", "*")
  103.         if loginpass == userlist[loginid].password
  104.             then
  105.                 break
  106.             else
  107.                 attempts = attempts + 1
  108.         end
  109.     end        
  110. --[[            while loginpass ~= userlist[loginid].password and a <= 3 do
  111.                    
  112.                     if a>0
  113.                     then
  114.                         term.setCursorPos(1,9)
  115.                         print("Incorrect Password. ("..3-a.."/3 attempts remaining.)")
  116.                     end
  117.                    
  118.                     write("Please enter password:")
  119.                     loginpass = read("*")
  120.                     a = a + 1
  121.                 end ]]         
  122.     if attempts == 3
  123.         then
  124.             attempts=0
  125.             homescreen()
  126.             print("Too many failed attempts. Please wait.")
  127.             sleep(2)
  128.             home()
  129.         else
  130.             status = "Logged In"
  131.             currentuser = loginid
  132.             print("Entry Authorized.")
  133.             sleep(2)
  134.             home()
  135.     end
  136.                    
  137. --[[                if loginpass == userlist[loginid].password
  138.                     then
  139.                         status = "Logged In"
  140.                         currentuser = loginid
  141.                         print("Entry Authorized.")
  142.                         sleep(2)
  143.                         homescreen()
  144.                     else
  145.                         a = a+1
  146.                         if a < 3
  147.                             then
  148.                                 password()
  149.                             else
  150.                                 a=0
  151.                                 homescreen()
  152.                                 print("Too many failed attempts. Please wait.")
  153.                                 sleep(2)
  154.                                 login()
  155.                         end
  156.                 end ]]
  157. end
  158.  
  159. function logout()
  160.     currentuser = nil
  161.     status = "Logged Out"
  162. end
  163.  
  164. function removeuser()
  165.     homescreen()
  166.     print("Remove User")
  167.     user = getInput("Username:")
  168.     while true do
  169.         if userlist[user] == nil
  170.             then
  171.                 print("Invalid Username. Please try again.")
  172.                 sleep(2)
  173.             else
  174.                 break
  175.         end
  176.     end
  177.     print("Remove User " ..user.."? [Y/N]")
  178.     local event, k1 = os.pullEvent("char")
  179.     if k1 == "y"
  180.         then
  181.             userlist[user] = nil
  182.             users[user] = nil
  183.     end
  184.     home()
  185.    
  186. end
  187.  
  188. --[[function checkuser(id, func)
  189.     if userlist[id] == nil
  190.         then
  191.             print("Invalid Username. Please try again.")
  192.             sleep(2)
  193.             func
  194.     end]]
  195.  
  196. function displayusers()
  197.     homescreen()
  198.     term.setCursorPos(1, 6)
  199.     print("Userlist:")
  200.     textutils.tabulate(users)
  201.     print("Press [Any Key] to return to menu")
  202.     a, b= os.pullEventRaw()
  203.     if a == "key"
  204.         then
  205.             home()
  206.     end
  207. end
  208.    
  209. function future()
  210.     homescreen()
  211.     print("Future Update!")
  212.     print("Press [Any Key] to return to menu.")
  213.     a, b= os.pullEventRaw()
  214.     if a == "key"
  215.         then
  216.             home()
  217.     end
  218. end
  219.  
  220. function printmenu(menu)
  221.     n=1
  222.     l=#menu
  223.     while true do
  224.         homescreen()
  225.         term.setCursorPos(1,6)
  226.         for i=1, l, 1 do
  227.             if i==n
  228.                 then
  229.                     print("["..menu[i].."]")
  230.                 else
  231.                     print(" "..menu[i])
  232.             end
  233.         end
  234.         term.setCursorPos(1,19)
  235.         print("Select a number[arrow up/arrow down]")
  236.         a, b= os.pullEventRaw()
  237.         if a == "key"
  238.             then
  239.                 if b==200 and n>1
  240.                     then
  241.                         n=n-1
  242.                 end
  243.                 if b==208 and n<=l
  244.                     then
  245.                         n=n+1
  246.                 end
  247.                 if b==28
  248.                     then
  249.                         break
  250.                 end
  251.         end
  252.     end
  253.     homescreen()
  254.     return n
  255. end
  256.  
  257. function home()
  258.     homescreen()
  259.    
  260.     while status == "Logged Out" do
  261.         if #userlist == 0
  262.             then
  263.                 newuser(true)
  264.             else
  265.                 login()
  266.                 password()
  267.         end
  268.     end
  269.     if userlist[currentuser].adminstatus == true
  270.         then
  271.             printmenu(adminmenu)
  272.         else
  273.             printmenu(usermenu)
  274.     end
  275.    
  276.     if n == 1
  277.         then
  278.             future()
  279.         elseif n == 2 then
  280.             future()
  281.         elseif n == 3 then
  282.             future()
  283.         elseif n == 4 then
  284.             logout()
  285.         elseif n == 5 then
  286.             newuser()
  287.         elseif n == 6 then
  288.             newuser(true)
  289.         elseif n == 7 then
  290.             removeuser()
  291.         elseif n == 8 then
  292.             displayusers()
  293.     end
  294.            
  295. end
  296. home()
Advertisement
Add Comment
Please, Sign In to add comment