| 
					
				 | 
			
			
				@@ -148,6 +148,56 @@ func (this *Modules) RegisterAction_CpFirstUser() *Action { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (this *Modules) RegisterAction_CpUserLogin() *Action { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return this.newAction(AInfo{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		WantDB: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Mount:  "signin", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, func(wrap *wrapper.Wrapper) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pf_email := wrap.R.FormValue("email") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pf_password := wrap.R.FormValue("password") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if pf_email == "" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			wrap.MsgError(`Please specify user email`) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if !utils.IsValidEmail(pf_email) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			wrap.MsgError(`Please specify correct user email`) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if pf_password == "" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			wrap.MsgError(`Please specify user password`) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if wrap.S.GetInt("UserId", 0) > 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			wrap.MsgError(`You already logined`) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var user_id int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		err := wrap.DB.QueryRow( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			"SELECT `id` FROM `users` WHERE `email` = ? and `password` = MD5(?) LIMIT 1;", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			pf_email, pf_password).Scan(&user_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if err != nil && err != sql.ErrNoRows { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			wrap.MsgError(err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if err == sql.ErrNoRows { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			wrap.MsgError(`Incorrect email or password`) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// Save to current session 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		wrap.S.SetInt("UserId", user_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// Reload current page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		wrap.Write(`window.location.reload(false);`) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // All actions here... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// User login 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // User logout 
			 |