$search
00001 #!/usr/bin/env python 00002 00003 import nstart 00004 import config 00005 import os, sys, string, time 00006 00007 from pyclearsilver.CSPage import Context 00008 from MBPage import MBPage 00009 00010 import neo_cgi 00011 00012 from pyclearsilver.log import * 00013 00014 from auth import db_auth 00015 from auth import cookieauth 00016 00017 class IndexPage(MBPage): 00018 def setup(self): 00019 hdf = self.ncgi.hdf 00020 self.requestURI = hdf.getValue("Query.request", "") 00021 if self.requestURI: 00022 hdf.setValue("CGI.cur.request", self.requestURI) 00023 00024 def display(self): 00025 hdf = self.ncgi.hdf 00026 00027 self.requestURI = hdf.getValue("Query.request", "") 00028 if not self.requestURI: 00029 self.requestURI = hdf.getValue("HTTP.Referer", "") 00030 00031 if self.requestURI: 00032 hdf.setValue("CGI.cur.request", self.requestURI) 00033 00034 00035 def error(self, msg): 00036 self.redirectUri("changePassword.py?err=%s&request=%s" % (neo_cgi.urlEscape(msg), neo_cgi.urlEscape(self.requestURI))) 00037 00038 def Action_changePassword(self): 00039 hdf = self.ncgi.hdf 00040 00041 q_pw0 = hdf.getValue("Query.pw0","") 00042 00043 q_pw1 = hdf.getValue("Query.pw1","") 00044 q_pw2 = hdf.getValue("Query.pw2","") 00045 00046 00047 requestURI = hdf.getValue("Query.request", "%swebui" % config.gBaseURL) 00048 00049 if not requestURI: 00050 requestURI = config.gBaseURL + self.login + "/mail/prefs.py" 00051 00052 if not self.login: 00053 self.redirectUri(self.requestURI) 00054 00055 if not q_pw0: 00056 self.error("Old password is not complete.") 00057 00058 if not q_pw1 or (q_pw1 != q_pw2): 00059 self.error("New passwords do not match.") 00060 00061 authdb = db_auth.initSchema() 00062 userRec = authdb.users.lookup(self.login) 00063 00064 if not userRec.checkPassword(q_pw0): 00065 self.error("Old password is invalid.") 00066 00067 userRec.setPassword(q_pw1) 00068 00069 cookieauth.issueLoginCookie(self.ncgi, authdb, self.login, userRec.pw_hash) 00070 00071 # self.issueLoginCookie(self.login, self.MB.getOption("pw_hash")) 00072 00073 warn("redirecting to", repr(self.requestURI)) 00074 self.redirectUri(self.requestURI) 00075 00076 00077 def run(context): 00078 return IndexPage(context, pagename="changePassword", checkActive=False) 00079 00080 def main(context): 00081 run(context).start() 00082 00083 if __name__ == "__main__": 00084 main(Context())