Progetto B Progettare un applicazione web basata su Servlet e JSP che permetta la collaborazione di diversi utenti nel creare, aggiornare e gestire un archivio di pagine personali degli autori di un giornale. I dati relativi agli utenti dell applicazione sono conservati in una base di dati di nome registrazione, contenente una tabella di nome ArchivioUtenti. Ciascun utente sarà rappresentato attraverso un record della suddetta tabella. Il file registrazione.sql allegato in appendice contiene le istruzioni SQL per la definizione della base di dati descritta. Utenti Gli utenti sono classificati in due modi attraverso due campi della tabella ArchivioUtenti. Il campo Tipo rappresenta il ruolo dell utente rispetto all applicazione, e può essere amministratore (Tipo= A ) oppure utente base (Tipo= B ), mentre il campo Autore rappresenta il ruolo di appartenenza alla redazione del giornale, ovvero se si tratta di un autore (campo Autore= S ) oppure semplicemente di un lettore (campo Autore= N ). Di conseguenza si potranno avere solo utenti di questi tipi 1. Amministratore e Autore (Tipo= A, Autore= S ) 2. Amministratore e Non Autore (Tipo= A, Autore= N ) 3. Utente Base e Autore (Tipo= B, Autore= S ) 4. Utente Base e Non Autore (Tipo= B, Autore= N ) L utente non registrato e l utente base e non autore hanno gli stessi diritti e possono soltanto consultare l archivio delle pagine personali, senza possibilità di modificarlo. Tutti gli autori hanno la possibilità di richiedere la creazione di una propria pagina nell archivio e modificarne a piacimento i dati. Se non sono amministratori non hanno diritti di creazione né di modifica di pagine relative ad altri autori. L amministratore ha diritto di aggiungere nuovi utenti autori all ArchivioUtenti, cancellare utenti esistenti, creare, modificare ed eventualmente cancellare le relative pagine. Non può creare nuovi amministratori. La registrazione di nuovi autori è esclusiva facoltà dell amministratore e non devono essere previste procedure di registrazione da parte di utenti non presenti in archivio, ma soltanto le necessarie procedure di autenticazione attraverso un form di login e le opportune servlet o tag per l autenticazione. Pagina home Tale pagina conterrà: 1. un elenco di autori generato dinamicamente (inclusione del file: elenco.jsp) 2. un link per il logout (link alla servlet di logout) o per il login a seconda che l utente abbia già superato o meno le procedure di autenticazione 3. un link al pannello di lavoro (link alla pagina: pannello.jsp)
Elenco di autori (elenco.jsp) Si tratta di un elenco di tutti gli autori presenti in archivio, sia che questi abbiano richiesto la creazione di una pagina personale, o no. Nel caso in cui per l autore in elenco esista una pagina personale, il suo nome e cognome dovranno essere affiancati ad un link alla pagina autore.jsp con passaggio dell ID dell autore come parametro di una richiesta http di tipo GET, in modo tale che la pagina dell autore in questione possa essere generata automaticamente. Pagina del singolo autore (autore.jsp) Tale pagina viene prodotta dinamicamente in funzione dell ID dell autore ricevuto come parametro di una richiesta di GET. Tale pagina dovrà contenere tutte le informazioni disponibili sull autore, opportunamente impaginate. Qualora la pagina venisse richiesta senza nessun parametro, o con un valore di parametro errato, l utente deve essere rediretto verso la pagina home, attraverso un qualsiasi metodo di redirezione che non coinvolga il client. La pagina di un autore contiene le seguenti informazioni: 1. UserID 2. Nome e Cognome 3. Note biografiche 4. Email 5. Bibliografia esterna al giornale, suddivisa in : a. Volumi b. Articoli c. Recensioni 6. Bibliografia nel giornale, suddivisa in: a. Interviste b. Articoli c. Saggi d. Recensioni e. Materiali d archivio 7. Pagina web personale esterna all applicazione (opzionale) Accanto a ciascun elemento bibliografico potrà opzionalmente essere presente un link ad un corrispondente file pdf oppure un link esterno all applicazione. Servlet di logout Deve prevedere la cancellazione di tutte le informazioni che permettono il riconoscimento dell utente dell applicativo e il ritorno alla pagina home
Pannello di lavoro (pannello.jsp) Tale pagina dovrà essere protetta da un opportuno tag personalizzato e mostrare i seguenti contenuti: 1. Se l utente non ha già effettuato le operazioni di login, deve essere visualizzato un form di login in cui inserire UserID e password, per poi essere rediretti, una volta autenticati, alla stessa pagina protetta dalla quale è scaturita la richiesta di login. 2. Dopo tre tentativi errati di login provenienti dallo stesso indirizzo ip, tale indirizzo deve essere inserito in una black list e l accesso deve essere interdetto per le successive 4 ore. 3. Se l utente non è un autore (campo Autore= N ) deve essere rediretto ad una pagina di errore (errore.jsp) contenente un messaggio che specifichi che l utente non dispone di diritti sufficienti alla modifica delle pagine degli autori e un link per il logout. 4. Se l utente è un autore, ma non è amministratore, devono essere presenti i link alle seguenti funzionalità: a. Se non esiste già, creazione di una pagina web personale (MyCREATE) link a CreateMyPage.jsp b. Modifica della pagina personale se già esiste (MyMODIFY) link a ModifyMyPage.jsp c. Eliminazione della pagina personale (MyDELETE) link a DeleteMyPage.jsp d. Logout servlet di logout 5. Se l utente è di tipo amministratore (Tipo= A ), sia che questo sia un autore oppure no, deve essere visualizzato un pannello di amministrazione contenente i link alle seguenti 3 funzionalità: a. Inserimento di un nuovo autore (INS) link a inserisci.jsp b. Lista degli autori amministrabili (VIEW) link a view.jsp c. Logout servlet di logout d. Se l utente amministratore è anche autore devono essere presenti anche le funzionalità MyCREATE, MyMODIFY e MyDELETE descritte per gli utenti autori Pagine di creazione e modifica (CreateMyPage.jsp, ModifyMyPage.jsp) La pagina di creazione deve permettere all utente di inserire tutti i dati necessari alla creazione della propria pagina personale, e l upload di file da associare opzionalmente ai riferimenti bibliografici forniti. Il form di creazione della pagina deve prevedere un pulsante di reset di tutti i campi del form e uno di completamento della procedura che deve avviare tutte le procedure affinché i dati inseriti vengano memorizzati e possano essere utilizzati per visualizzare l autore nell elenco degli autori, con il relativo link alla pagina personale prodotta dinamicamente. Le procedure di modifica previste nella pagina ModifyMyPage.jsp devono prevedere la visualizzazione di tutti i dati già inseriti e la modifica di tutti questi dati, tranne quelli relativi all anagrafica dell utente. Pagina di inserimento di un nuovo autore da parte dell amministratore (inserisci.jsp) Deve consentire l inserimento di un nuovo autore nel database (privo di diritti di amministrazione) ma non creare la relativa pagina. L accesso a tale pagina deve essere consentito solo all amministratore.
Pagina di amministrazione degli autori (view.jsp) Deve essere consentito l accesso a tale pagina esclusivamente all amministratore. In tale pagina l amministratore dovrà vedere un elenco di tutti gli autori presenti, con un link alla loro pagina, un link per la cancellazione di ogni singolo utente, un link ad una pagina per la modifica dei dati relativi al singolo utente. Appendice Si dispone di una base di dati creata attraverso il file registrazione.sql. Rinominare la base di dati sostituendo le parole cognome1 e cognome2 con i cognomi dei primi due componenti del gruppo in ordine alfabetico. --- registrazione.sql --- CREATE DATABASE registrazione_cognome1_cognome2; grant all privileges on registrazione.* to 'admin'@'localhost' identified by 'admin'; flush privileges; USE registrazione_cognome1_cognome2; CREATE TABLE ArchivioUtenti ( UltimaModifica TIMESTAMP, UserID VARCHAR(16) NOT NULL, Password VARCHAR(50) NOT NULL, Hint TEXT, Firma TEXT, Tipo VARCHAR(1) NOT NULL, Nome VARCHAR(40), Cognome VARCHAR(40), Nascita VARCHAR(10), Email VARCHAR(40) NOT NULL, Competenze TEXT, RuoloDocente VARCHAR(22), Autore VARCHAR(1), DataIscrizione TIMESTAMP, PaginaWeb VARCHAR(60), CONSTRAINT UserID PRIMARY KEY (UserID), UNIQUE KEY IDX_Utente_1 (UserID) ); INSERT INTO ArchivioUtenti (UserID, Password, Firma, Tipo, Competenze, Nome, Cognome, Nascita, Email, RuoloDocente, Autore, VALUES ('Amministratore', 'Amministratore', 'Amministratore dei servizi', 'A', 'gestore applicativi web', 'Paolino','Paperino','20/08/1900', 'paolino.paperino@paperopoli.com','professore Ordinario','S', 20060101000000,'http://www.miosito.it'); INSERT INTO ArchivioUtenti (UserID, Password, Firma, Tipo, Competenze, Nome, Cognome, Nascita, Email, RuoloDocente, LingueNote, VALUES ('Autore1', 'Autore', 'Membro della redazione', 'B', 'vincitore premio Pulitzer', 'Mickey','Mouse','21/08/1900', 'mickey.mouse@paperopoli.com','professore straordinario','s', 20060101000000,'http://www.suosito.it');
INSERT INTO ArchivioUtenti (UserID, Password, Firma, Tipo, Competenze, Nome, Cognome, Nascita, Email, RuoloDocente, LingueNote, VALUES ('Passante1', 'Passante', 'curiosone', 'B', 'frequentatore abituale del sito', 'Archimede','Pitagorico', '22/08/1900', 'archimede.pitagorico@paperopoli.com','studente','n', 20060101000000,'http://www.archimede_pitagorico.com'); -----