From dc53423183a0c459284ebd139022b707f01af006 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 27 Jul 2007 12:53:38 +0000 Subject: moved core files to new dir structure git-svn-id: svn://svn.alpinelinux.org/acf/core/trunk@219 ab2d0c66-481e-0410-8bed-d214d4d58bed --- app/acf-util/logon-model.lua | 61 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 app/acf-util/logon-model.lua (limited to 'app/acf-util/logon-model.lua') diff --git a/app/acf-util/logon-model.lua b/app/acf-util/logon-model.lua new file mode 100644 index 0000000..dbd8522 --- /dev/null +++ b/app/acf-util/logon-model.lua @@ -0,0 +1,61 @@ +-- Logon / Logoff model functions + +module (..., package.seeall) + +local sess = require ("session") + +local pvt = {} + + +-- return a sessionid if username / password is valid, false +-- /etc/acf/passwd should be lines of userid:passwd:user name:role1[,role2[,role3]] +pvt.logon = function (self, id, passwd ) + -- if we already have sessionid... then you are already logged in + if self.session.id then + return false + end + + id = id or "" + passwd = passwd or "" + + -- open our hokey password file, + local f = io.open(self.conf.confdir .. "/passwd" ) + if f then + m = f:read("*all") .. "\n" + f:close() + + for l in string.gmatch(m, "(%C*)\n") do + local userid, password, username, roles = + string.match(l, "([^:]*):([^:]*):([^:]*):(.*)") + if userid == id and password == passwd then + self.session.id = sess.random_hash(512) + self.session.name = username + self.session.roles = roles + break + end + end + end + if self.session.id then + local x = require("session") + x.save_session(self.conf.sessiondir, self.session.id, self.session) + x=nil + return self.session.id + else + return false + end +end + +-- invalidate the session, or return false if the session wasn't valid +pvt.logout = function (self, sessionid) + + sess.invalidate_session ( self.conf.sessiondir, sessionid) + self.session = {} + +end + +------------------------------------------------------------------------- +-- Public Methods +------------------------------------------------------------------------- + +logon = pvt.logon +logout = pvt.logout -- cgit v1.2.3