Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.javelin.examples.swinglets;
- import java.net.*;
- import java.util.*;
- import java.io.*;
- import java.awt.*;
- import java.text.*;
- import javax.swing.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- import com.javelin.swinglets.*;
- import com.javelin.swinglets.event.*;
- import com.javelin.security.*;
- /**
- * Servlet to display a demo Servlet.
- *
- * @author Dino Fancellu
- */
- public class SecurityServlet extends HttpServlet
- {
- SLabel homeLink=null;
- class NormalUser implements User
- {
- String loginName;
- public String getLoginName()
- {
- return loginName;
- }
- public void setLoginName(String name)
- {
- loginName=name;
- }
- public String getFullName()
- {
- return loginName;
- }
- public boolean isLoggedIn()
- {
- return true;
- }
- public boolean hasPermission(String perm)
- {
- if (perm.equalsIgnoreCase("BROWSE"))
- {
- return true;
- }
- if (perm.equalsIgnoreCase("UPDATEPROFILE"))
- {
- return true;
- }
- return false;
- }
- public boolean hasPermissions(Object[] perms)
- {
- for (int x=0;x<perms.length;x++)
- {
- if (hasPermission((String)perms[x]))
- {
- return true;
- }
- }
- return false;
- }
- }
- class LoginPanel extends SPanel implements FormListener
- {
- STextField loginName=new STextField();
- SPasswordField password=new SPasswordField();
- SPanel results=new SPanel();
- STable header=new STable(2, 1);
- //SLabel logoutLink=new SLabel("Logout",new SLink("logout"));
- SLabel registerLink=new SLabel("Register",new SLink("/register"));
- SLabel forgotLink=new SLabel("Forgot password?",new SLink("forgot"));
- SForm loginForm=null;
- SForm logoutForm=null;
- public void formReset( com.javelin.swinglets.event.FormEvent ev )
- {
- }
- public void formSubmitted( com.javelin.swinglets.event.FormEvent ev )
- {
- if (ev.getSource()==logoutForm)
- {
- System.out.println("trying to log out");
- Security.logout();
- return;
- }
- String name=loginName.getText();
- String pass=password.getText();
- results.removeAll();
- if (name.length()==0)
- {
- results.add(new SLabel("Name must not be blank"));
- }
- else
- {
- if (pass.equalsIgnoreCase("pass"))
- {
- results.add(new SLabel("Password correct"));
- NormalUser us=new NormalUser();
- us.setLoginName(name);
- Security.setUser(us);
- }
- else
- {
- results.add(new SLabel("Password incorrect"));
- }
- }
- System.out.println(name);
- System.out.println(pass);
- }
- public void onPaint()
- {
- User user=Security.getUser();
- if (user.isLoggedIn())
- {
- setupLoggedIn(user.getLoginName());
- }
- else
- {
- setupNotLoggedIn();
- }
- }
- public void setupLoggedIn(String name)
- {
- header.setValueAt(new SLabel("Logged in as "+name), 0, 0);
- logoutForm.setBackground(SColor.white);
- // logoutLink.setBackground(SColor.white);
- logoutForm.setParent(this);
- header.setValueAt(logoutForm, 1, 0);
- //header.setValueAt(logoutLink,1,0);
- }
- public void setupNotLoggedIn()
- {
- header.setValueAt(new SLabel("Login"), 0, 0);
- loginForm.setBackground(SColor.white);
- loginForm.setParent(this);
- header.setValueAt(loginForm, 1, 0);
- }
- public LoginPanel()
- {
- // setup header
- header.setIntercellPadding( new Dimension( 1, 1 ) );
- header.setIntercellSpacing( new Dimension( 1, 1 ) );
- header.setGridWidth(0);
- header.setBackground(SColor.getColor("lightskyblue"));
- add(header);
- // setup bits for login
- STable table=new STable(4, 2);
- table.setIntercellPadding( new Dimension( 1, 1 ) );
- table.setIntercellSpacing( new Dimension( 1, 1 ) );
- table.setGridWidth(0);
- table.setBackground(SColor.white);
- table.setForeground(SColor.black);
- loginForm=new SForm();
- loginForm.add(table);
- loginForm.addFormEventListener(this);
- logoutForm=new SForm();
- logoutForm.add(new SButton( "Logout"));
- logoutForm.addFormEventListener(this);
- table.setValueAt(new SLabel("Login Name"),0,0);
- table.setValueAt(loginName,0,1);
- table.setValueAt(new SLabel("Password"),1,0);
- table.setValueAt(password,1,1);
- table.setValueAt(registerLink,2,0);
- table.setValueAt(forgotLink,2,1);
- table.setValueAt(new SButton("Login"),3,0);
- table.setValueAt(results,3,1);
- setBackground(SColor.getColor("skyblue1"));
- //add(results);
- }
- }
- public synchronized void init( ServletConfig config ) throws ServletException
- {
- super.init( config );
- SUIManager.setLookAndFeel( "com.javelin.swinglets.plaf.javascript.JSLookAndFeel" );
- SwingletManager.setDefaultRealPath( config.getServletContext().getRealPath("") );
- }
- public synchronized void service(HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException
- {
- //IF you to override the real path, on a per servlet basis.
- super.service(request, response);
- }
- // need to handle doPost else forms won't work.
- public synchronized void doPost(HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException
- {
- try
- {
- ServletManager servletManager = ServletManager.getManager( request );
- SComponent component = servletManager.handle( request, response, null );
- //component.paint( ServletManager.getOutput( component, response ));
- doGet(request,response);
- }
- catch( Exception e )
- {
- e.printStackTrace();
- response.sendError( response.SC_INTERNAL_SERVER_ERROR, e.getMessage() );
- }
- finally
- {
- SwingletManager.setSwingletManager( null );
- }
- }
- public synchronized void doUpdate( HttpServletRequest request, HttpServletResponse response )
- throws IOException, ServletException
- {
- System.out.println("update");
- User user=null;
- user=Security.getUser();
- if( !user.hasPermission("UPDATEPROFILE") )
- {
- response.sendRedirect( request.getServletPath() );
- return;
- }
- PrintWriter out = response.getWriter();
- SFrame frame = new SFrame();
- frame.setTitle( "Security Servlet/Update" );
- frame.setLayoutManager(new SFlowLayout(SConstants.LEFT));
- frame.add( new LoginPanel());
- frame.add( new SLabel("Pretend there's a panel to update things")) ;
- frame.add( homeLink );
- frame.paint( out );
- response.setContentType( frame.getContentType() );
- }
- public synchronized void doBrowse( HttpServletRequest request, HttpServletResponse response )
- throws IOException, ServletException
- {
- System.out.println("browse");
- STable table=new STable(5, 5);
- for (int x=0;x<5;x++)
- {
- for (int y=0;y<5;y++)
- {
- StringBuffer buff=new StringBuffer();
- buff.append(x);
- buff.append(' ');
- buff.append(y);
- table.setValueAt(buff,x,y);
- }
- }
- PrintWriter out = response.getWriter();
- SFrame frame = new SFrame();
- frame.add( new LoginPanel());
- frame.add(table);
- frame.setTitle( "Security Servlet/Update" );
- frame.setLayoutManager(new SFlowLayout(SConstants.LEFT));
- frame.add(new SLabel("Pretend there's a panel to update things"));
- frame.add(homeLink);
- frame.paint(out);
- response.setContentType( frame.getContentType() );
- }
- public synchronized void doGet( HttpServletRequest request, HttpServletResponse response )
- throws IOException, ServletException
- {
- ServletManager servletManager = ServletManager.getManager( request );
- homeLink=new SLabel("Home",new SLink(request.getServletPath()));
- String query=request.getQueryString();
- System.out.println("Query="+query);
- if ("update".equalsIgnoreCase(query))
- {
- doUpdate(request,response);
- return;
- }
- if ("browse".equalsIgnoreCase(query))
- {
- doBrowse(request,response);
- return;
- }
- PrintWriter out = response.getWriter();
- SFrame frame = new SFrame();
- frame.setTitle( "Security Servlet" );
- frame.setLayoutManager(new SFlowLayout(SConstants.LEFT));
- frame.add( new LoginPanel());
- User user=null;
- user=Security.getUser();
- StringBuffer fullpath=javax.servlet.http.HttpUtils.getRequestURL(request);
- fullpath.append('/');
- //frame.add(new SLabel("<BASE HREF=\""+fullpath+"\">"));
- if (user.hasPermission("BROWSE"))
- {
- frame.add(new SLabel("Browse stuff",new SLink("?browse")));
- }
- if (user.hasPermission("UPDATEPROFILE"))
- {
- frame.add(new SLabel("Update your profile",new SLink("?update")));
- }
- frame.paint(out);
- response.setContentType( frame.getContentType() );
- }
- }
Add Comment
Please, Sign In to add comment