Guest User

Untitled

a guest
Sep 15th, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.87 KB | None | 0 0
  1. package com.javelin.examples.swinglets;
  2.  
  3. import java.net.*;
  4. import java.util.*;
  5. import java.io.*;
  6. import java.awt.*;
  7. import java.text.*;
  8.  
  9. import javax.swing.*;
  10. import javax.servlet.*;
  11. import javax.servlet.http.*;
  12.  
  13. import com.javelin.swinglets.*;
  14. import com.javelin.swinglets.event.*;
  15. import com.javelin.security.*;
  16.  
  17.  
  18. /**  
  19.  * Servlet to display a demo Servlet.
  20.  *
  21.  * @author Dino Fancellu
  22.  */
  23.  
  24. public class SecurityServlet extends HttpServlet
  25. {  
  26.  SLabel homeLink=null;
  27.  
  28.     class NormalUser implements User
  29.     {
  30.         String loginName;  
  31.         public String getLoginName()
  32.         {
  33.             return loginName;  
  34.         }
  35.        
  36.         public void setLoginName(String name)
  37.         {
  38.             loginName=name;  
  39.         }
  40.        
  41.         public String getFullName()
  42.         {
  43.             return loginName;
  44.         }
  45.        
  46.         public boolean isLoggedIn()
  47.         {
  48.             return true;
  49.         }
  50.        
  51.         public boolean hasPermission(String perm)
  52.         {
  53.             if (perm.equalsIgnoreCase("BROWSE"))
  54.             {
  55.                 return true;
  56.             }
  57.             if (perm.equalsIgnoreCase("UPDATEPROFILE"))
  58.             {
  59.                 return true;
  60.             }
  61.             return false;
  62.         }
  63.        
  64.         public boolean hasPermissions(Object[] perms)
  65.         {
  66.             for (int x=0;x<perms.length;x++)
  67.             {
  68.                 if (hasPermission((String)perms[x]))
  69.                 {
  70.                     return true;
  71.                 }
  72.             }  
  73.             return false;  
  74.         }
  75.    }
  76.    
  77.     class LoginPanel extends SPanel implements FormListener
  78.     {
  79.         STextField loginName=new STextField();
  80.         SPasswordField password=new SPasswordField();
  81.         SPanel results=new SPanel();
  82.         STable header=new STable(2, 1);
  83.         //SLabel logoutLink=new SLabel("Logout",new SLink("logout"));
  84.         SLabel registerLink=new SLabel("Register",new SLink("/register"));
  85.         SLabel forgotLink=new SLabel("Forgot password?",new SLink("forgot"));
  86.         SForm loginForm=null;
  87.         SForm logoutForm=null;
  88.      
  89.         public void formReset( com.javelin.swinglets.event.FormEvent ev )
  90.         {
  91.         }
  92.  
  93.         public void formSubmitted( com.javelin.swinglets.event.FormEvent ev )
  94.         {
  95.             if (ev.getSource()==logoutForm)
  96.             {
  97.                 System.out.println("trying to log out");
  98.                 Security.logout();
  99.                 return;
  100.             }
  101.              
  102.             String name=loginName.getText();
  103.             String pass=password.getText();
  104.             results.removeAll();
  105.              
  106.             if (name.length()==0)
  107.             {
  108.                 results.add(new SLabel("Name must not be blank"));
  109.             }
  110.             else
  111.             {
  112.                 if (pass.equalsIgnoreCase("pass"))
  113.                 {
  114.                     results.add(new SLabel("Password correct"));
  115.                     NormalUser us=new NormalUser();
  116.                     us.setLoginName(name);
  117.                     Security.setUser(us);
  118.                 }
  119.                 else
  120.                 {
  121.                     results.add(new SLabel("Password incorrect"));
  122.                 }
  123.             }
  124.                    
  125.             System.out.println(name);
  126.             System.out.println(pass);
  127.         }
  128.          
  129.         public void onPaint()
  130.         {
  131.             User user=Security.getUser();
  132.             if (user.isLoggedIn())
  133.             {
  134.                 setupLoggedIn(user.getLoginName());
  135.             }
  136.             else
  137.             {
  138.                 setupNotLoggedIn();
  139.             }
  140.         }
  141.          
  142.         public void setupLoggedIn(String name)
  143.         {
  144.             header.setValueAt(new SLabel("Logged in as "+name), 0, 0);
  145.             logoutForm.setBackground(SColor.white);
  146.         //      logoutLink.setBackground(SColor.white);
  147.             logoutForm.setParent(this);
  148.             header.setValueAt(logoutForm, 1, 0);            
  149.              
  150.             //header.setValueAt(logoutLink,1,0);    
  151.         }
  152.          
  153.         public void setupNotLoggedIn()
  154.         {
  155.             header.setValueAt(new SLabel("Login"), 0, 0);
  156.              
  157.             loginForm.setBackground(SColor.white);
  158.             loginForm.setParent(this);
  159.             header.setValueAt(loginForm, 1, 0);            
  160.         }
  161.          
  162.         public LoginPanel()
  163.         {
  164.                 // setup header
  165.             header.setIntercellPadding( new Dimension( 1, 1 ) );
  166.             header.setIntercellSpacing( new Dimension( 1, 1 ) );
  167.             header.setGridWidth(0);
  168.             header.setBackground(SColor.getColor("lightskyblue"));
  169.             add(header);
  170.                 // setup bits for login      
  171.             STable table=new STable(4, 2);
  172.             table.setIntercellPadding( new Dimension( 1, 1 ) );
  173.             table.setIntercellSpacing( new Dimension( 1, 1 ) );
  174.             table.setGridWidth(0);
  175.              
  176.             table.setBackground(SColor.white);
  177.             table.setForeground(SColor.black);
  178.              
  179.             loginForm=new SForm();
  180.             loginForm.add(table);
  181.             loginForm.addFormEventListener(this);
  182.              
  183.             logoutForm=new SForm();
  184.             logoutForm.add(new SButton( "Logout"));
  185.             logoutForm.addFormEventListener(this);
  186.              
  187.             table.setValueAt(new SLabel("Login Name"),0,0);
  188.             table.setValueAt(loginName,0,1);
  189.             table.setValueAt(new SLabel("Password"),1,0);
  190.             table.setValueAt(password,1,1);
  191.             table.setValueAt(registerLink,2,0);
  192.             table.setValueAt(forgotLink,2,1);
  193.                          
  194.             table.setValueAt(new SButton("Login"),3,0);
  195.             table.setValueAt(results,3,1);
  196.              
  197.             setBackground(SColor.getColor("skyblue1"));
  198.              
  199.              
  200.             //add(results);
  201.          
  202.         }
  203.     }
  204.    
  205.     public synchronized void init( ServletConfig config ) throws ServletException
  206.     {
  207.         super.init( config );
  208.     SUIManager.setLookAndFeel( "com.javelin.swinglets.plaf.javascript.JSLookAndFeel" );
  209.     SwingletManager.setDefaultRealPath( config.getServletContext().getRealPath("") );
  210.     }    
  211.    
  212.     public synchronized void service(HttpServletRequest request, HttpServletResponse response)
  213.     throws IOException, ServletException    
  214.     {
  215.         //IF you to override the real path, on a per servlet basis.
  216.         super.service(request, response);
  217.     }
  218.      // need to handle doPost else forms won't work.
  219.     public synchronized void doPost(HttpServletRequest request, HttpServletResponse response)
  220.     throws IOException, ServletException    
  221.     {
  222.         try
  223.         {
  224.             ServletManager servletManager = ServletManager.getManager( request );
  225.             SComponent component = servletManager.handle( request, response, null );
  226.             //component.paint( ServletManager.getOutput( component, response ));
  227.             doGet(request,response);
  228.         }
  229.         catch( Exception e )
  230.     {
  231.         e.printStackTrace();
  232.         response.sendError( response.SC_INTERNAL_SERVER_ERROR, e.getMessage() );
  233.     }
  234.     finally
  235.       {
  236.           SwingletManager.setSwingletManager( null );
  237.       }
  238.     }
  239.    
  240.     public synchronized void doUpdate( HttpServletRequest request, HttpServletResponse response )
  241.     throws IOException, ServletException
  242.     {
  243.         System.out.println("update");
  244.         User user=null;
  245.         user=Security.getUser();
  246.          
  247.         if( !user.hasPermission("UPDATEPROFILE") )
  248.         {
  249.             response.sendRedirect( request.getServletPath() );
  250.             return;
  251.         }
  252.        
  253.         PrintWriter out = response.getWriter();
  254.         SFrame frame = new SFrame();
  255.         frame.setTitle( "Security Servlet/Update" );
  256.         frame.setLayoutManager(new SFlowLayout(SConstants.LEFT));
  257.         frame.add( new LoginPanel());
  258.         frame.add( new SLabel("Pretend there's a panel to update things")) ;
  259.         frame.add( homeLink );
  260.         frame.paint( out );    
  261.         response.setContentType( frame.getContentType() );
  262.     }
  263.    
  264.     public synchronized void doBrowse( HttpServletRequest request, HttpServletResponse response )
  265.     throws IOException, ServletException
  266.     {
  267.         System.out.println("browse");
  268.         STable table=new STable(5, 5);
  269.          
  270.         for (int x=0;x<5;x++)
  271.         {
  272.             for (int y=0;y<5;y++)  
  273.             {
  274.                 StringBuffer buff=new StringBuffer();
  275.                    
  276.                 buff.append(x);
  277.                 buff.append(' ');
  278.                 buff.append(y);
  279.                 table.setValueAt(buff,x,y);
  280.             }
  281.         }
  282.         PrintWriter out = response.getWriter();
  283.         SFrame frame = new SFrame();
  284.         frame.add( new LoginPanel());
  285.         frame.add(table);  
  286.         frame.setTitle( "Security Servlet/Update" );
  287.         frame.setLayoutManager(new SFlowLayout(SConstants.LEFT));
  288.         frame.add(new SLabel("Pretend there's a panel to update things"));
  289.         frame.add(homeLink);
  290.         frame.paint(out);    
  291.         response.setContentType( frame.getContentType() );
  292.          
  293.     }
  294.    
  295.     public synchronized void doGet( HttpServletRequest request, HttpServletResponse response )
  296.     throws IOException, ServletException
  297.   {
  298.       ServletManager servletManager = ServletManager.getManager( request );
  299.       homeLink=new SLabel("Home",new SLink(request.getServletPath()));      
  300.       String query=request.getQueryString();
  301.       System.out.println("Query="+query);
  302.        
  303.         if ("update".equalsIgnoreCase(query))
  304.         {
  305.             doUpdate(request,response);
  306.             return;
  307.         }
  308.        
  309.         if ("browse".equalsIgnoreCase(query))
  310.         {
  311.             doBrowse(request,response);
  312.             return;
  313.         }
  314.              
  315.         PrintWriter out = response.getWriter();
  316.         SFrame frame = new SFrame();
  317.         frame.setTitle( "Security Servlet" );
  318.         frame.setLayoutManager(new SFlowLayout(SConstants.LEFT));
  319.        
  320.         frame.add( new LoginPanel());
  321.        
  322.         User user=null;
  323.        
  324.         user=Security.getUser();
  325.                
  326.         StringBuffer fullpath=javax.servlet.http.HttpUtils.getRequestURL(request);
  327.         fullpath.append('/');
  328.        
  329.         //frame.add(new SLabel("<BASE HREF=\""+fullpath+"\">"));
  330.  
  331.         if (user.hasPermission("BROWSE"))
  332.         {
  333.             frame.add(new SLabel("Browse stuff",new SLink("?browse")));  
  334.         }
  335.        
  336.         if (user.hasPermission("UPDATEPROFILE"))
  337.         {
  338.             frame.add(new SLabel("Update your profile",new SLink("?update")));  
  339.         }
  340.        
  341.        
  342.         frame.paint(out);    
  343.         response.setContentType( frame.getContentType() );
  344.     }
  345.    
  346.    
  347. }
Add Comment
Please, Sign In to add comment