summaryrefslogtreecommitdiffstats
path: root/app/acf-util/logon-controller.lua
blob: f641d33713168ac2b3dc14100aa4e2b8f10eb6ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
-- Logon / Logoff functions

module (..., package.seeall)

require ("session")

mvc.on_load = function(self, parent)
	-- If they specify an invalid action or try to run init, then redirect
	-- to the read function.
	if ( self.conf.action == nil  or self.conf.action == "init" )  then
		-- do what?
	end
	
end


logon = function(self)
	
	local userid=cfe({ name="userid" })
	local password=cfe({ name="password" })
	local logon=cfe({ name="Logon", type="submit"})
	local s = ""

	-- FIXME - if they are already logged in, log out first
	
	if clientdata.userid and clientdata.password then
		local t = self.model.logon(self,clientdata.userid,clientdata.password)
		
		if t == nil then
			userid.value = self.clientdata.userid
			userid.errtxt = "There was a problem logging in"
		else
		-- the login was successful - give them a new session, and redir to logged in
			session.id = session.random_hash ( 512)
			session.userinfo = t or {}
			self.conf.controller="welcome"
			self.conf.action = ""
			self.conf.type = "redir"
			logevent ("Logon was successful for " .. session.userinfo.username or "" )
			error (self.conf)
		end
	else
	-- If we reach this point, just give them the login page
        	return ( cfe ({type="form",
		option={ script=ENV["SCRIPT_NAME"],
		prefix=self.conf.prefix,
		controller = self.conf.controller,
		action = "logon" },
		value = { userid, password, logon } }))
	end
end


logout = function(self)
	self.model.logout(self, session.id)


        -- and raise an error to go to the homepage
	self.conf.action = ""
	self.conf.prefix = ""
	self.conf.controller = ""
	self.conf.type = "redir"
	error(self.conf)
end