Guest User

Untitled

a guest
Jul 6th, 2018
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.25 KB | None | 0 0
  1. import web
  2.  
  3. from web import form
  4. urls=("/login","login",
  5.       "/reg","registr",
  6.       "/logout","logout",
  7.       "/","userinfo",
  8.       "/edit","edit_info"
  9.      
  10.      
  11.       )
  12.  
  13. login_form=form.Form(
  14.                         form.Textbox("email",description="Email"),
  15.                         form.Password("password", description="Password"),
  16.                         form.Button("Sign in",type="submit",description="Sign in")
  17.                         )
  18.  
  19. valid_name=form.regexp(".+","Type your name")
  20. valid_pass=form.regexp(".{4,12}","password must be from 4 to 12 characters")
  21. valid_email=form.regexp("^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,4}$","Incorrect email")
  22. reg_form=form.Form(form.Textbox("name",valid_name,description="Name"),
  23.                    form.Textbox("email",valid_email,description="Email"),
  24.                    form.Password("passw",valid_pass,description="Password"),
  25.                    form.Password("passw2",description="Repeat Password"),
  26.                    form.Button("Proceed",type="submit",description="Sign up"),
  27.                    validators = [form.Validator("Password doesn't match", lambda x: x.passw == x.passw2)]
  28.                    )
  29.  
  30. db=web.database(dbn="sqlite",db="webpydb")
  31. render = web.template.render('templates')
  32.  
  33. def login_required(func):
  34.     def decor(*args,**kargs):
  35.         if session.logged:
  36.             return func(*args,**kargs)
  37.         else:
  38.             web.seeother("/login")
  39.     return decor
  40.        
  41.  
  42. class login:
  43.    
  44.     def GET(self):
  45.         f=login_form()
  46.         return render.login(f)
  47.    
  48.     def POST(self):
  49.         f=login_form()
  50.         email=web.input().email
  51.         passw=web.input().password
  52.         users=db.select('Users',limit=1,where='Email=$email and Pass=$passw',vars=locals())
  53.         error_msg="Wrong email or password"
  54.         err=render.error(error_msg)
  55.         try:
  56.             user=users[0]
  57.             session.name = user.Name
  58.             session.email=user.Email
  59.             session.logged = True
  60.         except IndexError:
  61.             return render.login(f,unicode(err))      
  62.         if session.logged==True:
  63.             web.seeother("/")
  64.            
  65. class registr:
  66.    
  67.     def GET(self):
  68.         f=reg_form()
  69.         return render.reg(f)
  70.    
  71.     def POST(self):
  72.         f=reg_form()
  73.         if f.validates():
  74.             name=f.d.name
  75.             email=f.d.email
  76.             passw=f.d.passw
  77.             exist=False
  78.             for x in db.select("Users"):
  79.                 if x.Email==email:
  80.                     exist=True
  81.             if exist:
  82.                 err=render.error("User with such email already exist")
  83.                 return render.reg(f,unicode(err))
  84.             else:
  85.                 db.insert("Users",Name=name,Email=email,Pass=passw)
  86.                 web.seeother("/")
  87.         else:
  88.             return render.reg(f)
  89.        
  90.  
  91. class logout:
  92.     @login_required
  93.     def GET(self):
  94.         session.kill()
  95.         web.seeother("/login")
  96.        
  97.  
  98. class userinfo:
  99.     @login_required
  100.     def GET(self):
  101.         greeting="Hello "+session.name
  102.         mail=session.email
  103.        
  104.         t=db.select("Users",limit=1,what="Name,Pass",where="Email=$mail",vars=locals()).list()
  105.         name=t[0].Name
  106.         pasw=t[0].Pass
  107.         print name,pasw
  108.         return render.info(greeting,name,mail,pasw)
  109.  
  110.            
  111.        
  112.        
  113. class edit_info:
  114.     @login_required
  115.     def GET(self):
  116.         f=reg_form()
  117.         return render.reg(f)
  118.    
  119.     def POST(self):
  120.         f=reg_form()
  121.         if f.validates():
  122.             name=f.d.name
  123.             email=f.d.email
  124.             passw=f.d.passw
  125.             old=session.email
  126.             db.update("users",where="Email=$old",Name=name,Email=email,Pass=passw,vars=locals())
  127.             session.name=name
  128.             session.email=email
  129.             web.seeother("/")
  130.         else:
  131.             return render.reg(f)
  132.        
  133. app=web.application(urls,globals())
  134. store=web.session.DiskStore('sessions')
  135. if web.config.get('_session') is None:
  136.     session = web.session.Session(app,store , initializer={'logged':False,'name':"some",'email':"aaa@aaa.aaa"})
  137.     web.config._session = session
  138. else:
  139.     session=web.config._session
  140. application=app.wsgifunc()
Add Comment
Please, Sign In to add comment