Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package gui;
- import java.awt.Color;
- import java.awt.Container;
- import java.awt.TextField;
- import java.awt.Toolkit;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import java.io.IOException;
- import java.util.ArrayList;
- import javax.swing.JButton;
- import javax.swing.JComboBox;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JScrollPane;
- import javax.swing.JTable;
- import logic.CertificateHelper;
- import logic.Data;
- import logic.KeyHelper;
- import logic.SecretFileHelper;
- import models.User;
- public class SystemWindow extends JFrame {
- boolean isAdmin;
- Data data;
- User newUser;
- KeyHelper keyHelper = KeyHelper.getInstance();
- ButtonListener buttonListener;
- Container contentPane;
- String clickedFileName;
- TextField enterName = new TextField(), enterLogin = new TextField(), enterPass = new TextField(),
- enterConfirmPass = new TextField(), enterCertificate = new TextField(), enterPrivateKey = new TextField(),
- enterSecretPhrase = new TextField(), enterFolderPath = new TextField();
- private int windowSize = 500;
- String tempPassword, enterUserGroup, tempCertificate;
- JComboBox userGroupCombo;
- private static SystemWindow instance = null;
- public static SystemWindow getInstance () {
- if (instance == null)
- instance = new SystemWindow ();
- return instance;
- }
- public SystemWindow () {
- data = Data.getInstance();
- buttonListener = new ButtonListener();
- contentPane = this.getContentPane();
- Color backgroundColour = new Color (186, 212, 247);
- int width = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
- int height = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
- width = width/2 - windowSize/2;
- height = height/2 - windowSize/2;
- contentPane.setBackground(backgroundColour);
- contentPane.setLayout(null);
- this.setTitle("System");
- this.setBounds(width, height, windowSize, windowSize);
- this.setResizable(false);
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- this.setVisible(true);
- }
- public void createHeaderComponents() {
- JLabel userLogin = new JLabel(), userGroup = new JLabel(), userDescription = new JLabel();
- userLogin.setText("Login: " + data.currentUser.login);
- if (isAdmin){
- userGroup.setText("Grupo: " + "Admin");
- }
- else{
- userGroup.setText("Grupo: " + "Usuário");
- }
- userDescription.setText("Descrição: " + data.currentUser.name);
- userLogin.setBounds(20, 10, 100, 30);
- userGroup.setBounds(20, 30, 100, 30);
- userDescription.setBounds(20, 50, 200, 30);
- contentPane.add(userLogin);
- contentPane.add(userGroup);
- contentPane.add(userDescription);
- }
- public void createAdminMenuComponents() {
- createHeaderComponents();
- JButton option1 = new JButton(), option2 = new JButton(),
- option3 = new JButton(), option4 = new JButton();
- JLabel mainMenu = new JLabel(), totalUserAccesses = new JLabel();
- totalUserAccesses.setText("Total de acessos do usuário: "+ data.currentUser.accessCount);
- totalUserAccesses.setBounds(20, 110, 200, 30);
- mainMenu.setText("Menu Principal");
- mainMenu.setBounds(20, 130, 100, 50);
- isAdmin = data.dbHelper.checkAdmin(data.currentUser.login);
- if (isAdmin)
- {
- option1.setName("MenuOption1");
- option2.setName("MenuOption2");
- option3.setName("MenuOption3");
- option4.setName("MenuOption4");
- option1.addActionListener(buttonListener);
- option2.addActionListener(buttonListener);
- option3.addActionListener(buttonListener);
- option4.addActionListener(buttonListener);
- option1.setText("1 – Cadastrar um novo usuário");
- option2.setText("2 – Carregar a chave privada do usuário");
- option3.setText("3 – Consultar pasta de arquivos secretos do usuário");
- option4.setText("4 – Sair do Sistema");
- option1.setBounds(20, 180, 350, 40);
- option2.setBounds(20, 220, 350, 40);
- option3.setBounds(20, 260, 350, 40);
- option4.setBounds(20, 300, 350, 40);
- contentPane.add(option1);
- contentPane.add(option2);
- contentPane.add(option3);
- contentPane.add(option4);
- contentPane.add(totalUserAccesses);
- contentPane.add(mainMenu);
- }
- else {
- option1.setName("MenuOption2");
- option2.setName("MenuOption3");
- option3.setName("MenuOption4");
- option1.addActionListener(buttonListener);
- option2.addActionListener(buttonListener);
- option3.addActionListener(buttonListener);
- option1.setText("1 – Carregar a chave privada do usuário");
- option2.setText("2 – Consultar pasta de arquivos secretos do usuário");
- option3.setText("3 – Sair do Sistema");
- option1.setBounds(20, 180, 350, 40);
- option2.setBounds(20, 220, 350, 40);
- option3.setBounds(20, 260, 350, 40);
- contentPane.add(option1);
- contentPane.add(option2);
- contentPane.add(option3);
- contentPane.add(totalUserAccesses);
- contentPane.add(mainMenu);
- }
- this.validate();
- this.repaint();
- }
- public void createSeePrivateKeyComponents(){
- data.writeToLog("Tela de carregamento da chave privada apresentada para "+data.currentUser.login+".");
- createHeaderComponents();
- JLabel totalUserListings = new JLabel(), privateKey = new JLabel(), secretPhrase = new JLabel();
- JButton backButton = new JButton(), confirmButton = new JButton();
- backButton.addActionListener(buttonListener);
- backButton.setName("GoToMainMenu");
- backButton.setText("Voltar");
- backButton.setBounds(260, 430, 80, 40);
- confirmButton.addActionListener(buttonListener);
- confirmButton.setName("ConfirmKeyInfo");
- confirmButton.setText("Confirmar");
- confirmButton.setBounds(180, 430, 80, 40);
- privateKey.setText("Chave Privada: ");
- secretPhrase.setText("Frase Secreta: ");
- privateKey.setBounds(20, 180, 100, 40);
- secretPhrase.setBounds(20, 260, 100, 40);
- enterPrivateKey.setBounds(150, 180, 300, 45);
- enterSecretPhrase.setBounds(150, 260, 300, 40);
- totalUserListings.setText("Total de listagem do usuário: "+ 2); //TODO
- totalUserListings.setBounds(20, 110, 200, 30);
- contentPane.add(totalUserListings);
- contentPane.add(backButton);
- contentPane.add(privateKey);
- contentPane.add(secretPhrase);
- contentPane.add(confirmButton);
- contentPane.add(enterPrivateKey);
- contentPane.add(enterSecretPhrase);
- this.validate();
- this.repaint();
- }
- public void createAddNewUserComponents(){
- data.writeToLog("Tela de cadastro apresentada para "+data.currentUser.login+".");
- createHeaderComponents();
- String[] userGroups = new String[] {"Admin", "Usuário"};
- JLabel registerForm = new JLabel();
- JLabel fullName = new JLabel(), userLogin = new JLabel(), userGroup = new JLabel(),
- userPass = new JLabel(), confirmPass = new JLabel(), certificatePath = new JLabel(),
- totalUsersOnDb = new JLabel();
- JButton registerButton = new JButton(), backButton = new JButton();
- userGroupCombo = new JComboBox(userGroups);
- userGroupCombo.setSelectedIndex(0);
- totalUsersOnDb.setText("Total de usuários no sistema: "+ 2); //TODO
- totalUsersOnDb.setBounds(20, 110, 200, 30);
- registerForm.setText("Formulário de Cadastro");
- registerForm.setBounds(20, 130, 300, 50);
- registerButton.addActionListener(buttonListener);
- registerButton.setName("RegisterNewUser");
- registerButton.setText("Cadastrar");
- backButton.addActionListener(buttonListener);
- backButton.setName("GoToMainMenu");
- backButton.setText("Voltar");
- fullName.setText("Nome do usuário: ");
- userLogin.setText("Login: ");
- userGroup.setText("Grupo: ");
- userPass.setText("Senha pessoal: ");
- confirmPass.setText("Confirmação da senha: ");
- certificatePath.setText("Caminho do certificado: ");
- fullName.setBounds(20, 180, 200, 40);
- userLogin.setBounds(20, 220, 200, 40);
- userGroup.setBounds(20, 260, 200, 40);
- userPass.setBounds(20, 300, 200, 40);
- confirmPass.setBounds(20, 340, 200, 40);
- certificatePath.setBounds(20, 380, 200, 40);
- enterName.setBounds(250, 180, 200, 45);
- enterLogin.setBounds(250, 220, 200, 40);
- userGroupCombo.setBounds(250, 260, 200, 40);
- enterPass.setBounds(250, 300, 200, 40);
- enterConfirmPass.setBounds(250, 340, 200, 40);
- enterCertificate.setBounds(250, 380, 200, 40);
- enterName.setText("");
- enterLogin.setText("");
- enterPass.setText("");
- enterConfirmPass.setText("");
- enterCertificate.setText("");
- registerButton.setBounds(180, 430, 80, 40);
- backButton.setBounds(260, 430, 80, 40);
- contentPane.add(fullName);
- contentPane.add(userLogin);
- contentPane.add(userGroup);
- contentPane.add(userPass);
- contentPane.add(confirmPass);
- contentPane.add(certificatePath);
- contentPane.add(totalUsersOnDb);
- contentPane.add(enterName);
- contentPane.add(enterLogin);
- contentPane.add(userGroupCombo);
- contentPane.add(enterPass);
- contentPane.add(enterConfirmPass);
- contentPane.add(enterCertificate);
- contentPane.add(registerButton);
- contentPane.add(backButton);
- contentPane.add(registerForm);
- this.validate();
- this.repaint();
- }
- public void createConfirmNewUserComponents(){
- createHeaderComponents();
- JLabel confirmHeader = new JLabel(), fullName = new JLabel(), userLogin = new JLabel(),
- userGroup = new JLabel(), userPass = new JLabel();
- JLabel certificate = new JLabel(), version = new JLabel(), series = new JLabel(), expirationDate = new JLabel(),
- signatureType = new JLabel(), issuer = new JLabel(), friendlyName = new JLabel(), tanList = new JLabel();
- JButton confirmButton = new JButton(), backButton = new JButton();
- confirmHeader.setText("Confirmação de dados");
- confirmHeader.setBounds(20, 110, 200, 30);
- fullName.setText("Nome do usuário: " + enterName.getText());
- userLogin.setText("Login name: " + enterLogin.getText());
- userGroup.setText("Grupo: " ); //TODO
- userPass.setText("Senha pessoal: " + enterPass.getText()); //check
- fullName.setBounds(20, 160, 200, 40);
- userLogin.setBounds(20, 180, 200, 40);
- userGroup.setBounds(20, 200, 200, 40);
- userPass.setBounds(20, 220, 200, 40);
- certificate.setText("Certificado digital:");
- version.setText("Versão: " + data.certificateHelper.currentVersion);
- series.setText("Série: " + data.certificateHelper.currentSeries);
- expirationDate.setText("Validade: " + data.certificateHelper.currentExpiration);
- signatureType.setText("Tipo de assinatura: " + data.certificateHelper.currentType);
- issuer.setText("Emissor: " + data.certificateHelper.currentIssuer);
- friendlyName.setText("Sujeito: " + data.certificateHelper.currentSubject);
- tanList.setText("Tan: " + newUser.tanList);
- certificate.setBounds(20, 260, 400, 40);
- version.setBounds(20, 280, 400, 40);
- series.setBounds(20, 300, 400, 40);
- expirationDate.setBounds(20, 320, 400, 40);
- signatureType.setBounds(20, 340, 400, 40);
- issuer.setBounds(20, 360, 400, 40);
- friendlyName.setBounds(20, 380, 400, 40);
- tanList.setBounds(20, 400, 400, 40);
- confirmButton.setText("Confirmar");
- backButton.setText("Voltar");
- confirmButton.setName("ConfirmAddUser");
- backButton.setName("GoToFilledForm");
- confirmButton.addActionListener(buttonListener);
- backButton.addActionListener(buttonListener);
- confirmButton.setBounds(180, 430, 80, 40);
- backButton.setBounds(260, 430, 80, 40);
- contentPane.add(confirmHeader);
- contentPane.add(fullName);
- contentPane.add(userLogin);
- contentPane.add(userGroup);
- contentPane.add(userPass);
- contentPane.add(certificate);
- contentPane.add(version);
- contentPane.add(series);
- contentPane.add(expirationDate);
- contentPane.add(signatureType);
- contentPane.add(issuer);
- contentPane.add(friendlyName);
- contentPane.add(tanList);
- contentPane.add(confirmButton);
- contentPane.add(backButton);
- this.validate();
- this.repaint();
- }
- public void createViewSecretFileComponents(){
- data.writeToLog("Tela de consulta de arquivos secretos apresentada para "+data.currentUser.login+".");
- createHeaderComponents();
- JLabel totalUserViews = new JLabel(), folderPath = new JLabel();
- JButton listButton = new JButton(), backButton = new JButton();
- totalUserViews.setText("Total de consultas do usuário: "+ 2); //TODO
- totalUserViews.setBounds(20, 110, 250, 30);
- folderPath.setBounds(20, 150, 150, 40);
- folderPath.setText("Caminho da pasta: ");
- enterFolderPath.setBounds(180, 150, 280, 40);
- listButton.setText("Listar");
- listButton.setName("ListSecretFiles");
- listButton.addActionListener(buttonListener);
- listButton.setBounds(20, 190, 80, 40);
- backButton.setText("Voltar");
- backButton.setName("GoToMainMenu");
- backButton.addActionListener(buttonListener);
- backButton.setBounds(260, 430, 80, 40);
- contentPane.add(totalUserViews);
- contentPane.add(folderPath);
- contentPane.add(listButton);
- contentPane.add(backButton);
- contentPane.add(enterFolderPath);
- this.validate();
- this.repaint();
- }
- public void createFileTableComponents(){
- data.writeToLog("Lista de arquivos apresentada para "+data.currentUser.login+".");
- String[] columnNames = new String[] {"Nome", "Assinatura Digital", "Envelope Digital", "Status"};
- ArrayList<String> fileNames = data.readFromIndexFile();
- Object[][] fileData = new Object[fileNames.size()][4];
- for (int i = 0; i < fileNames.size(); i++) {
- fileData[i][0] = fileNames.get(i);
- fileData[i][1] = data.secretFileHelper.getFileSignatureHex(fileNames.get(i));
- fileData[i][2] = data.secretFileHelper.getDigitalEnvelopeHex(fileNames.get(i));
- fileData[i][3] = ""; //TODO retorna string de integridade/autenticidada - OK ou NOT OK
- }
- JTable table = new JTable(fileData, columnNames);
- JScrollPane scrollPane = new JScrollPane(table);
- table.setFillsViewportHeight(true);
- table.addMouseListener(new MouseAdapter() {
- public void mouseClicked(MouseEvent e) {
- JTable target = (JTable)e.getSource();
- int row = target.getSelectedRow();
- int column = target.getSelectedColumn();
- clickedFileName = (String)fileData[row][column];
- data.accessSecretFiles(enterFolderPath.getText(), clickedFileName);
- fileData[row][3] = (String) data.secretFileHelper.currentFileIntegrity;
- table.repaint();
- data.writeToLog("Arquivo "+fileData[row][0]+" selecionado por "+data.currentUser.login+" para decriptação.");
- }
- });
- scrollPane.setBounds(20, 240, 460, 180);
- contentPane.add(scrollPane);
- this.validate();
- this.repaint();
- }
- public void createLeaveSystemComponents(){
- data.writeToLog("Tela de saída apresentada para "+data.currentUser.login+".");
- createHeaderComponents();
- JLabel totalUserAccesses = new JLabel(), leaveSystem = new JLabel(), leaveMessage = new JLabel();
- JButton leaveButton = new JButton(), backButton = new JButton();
- totalUserAccesses.setText("Total de acessos do usuário: "+ data.currentUser.accessCount);
- totalUserAccesses.setBounds(20, 110, 200, 30);
- leaveSystem.setText("SaÃda do sistema:");
- leaveSystem.setBounds(20, 130, 100, 50);
- leaveMessage.setText("Pressione o botão Sair para confirmar.");
- leaveMessage.setBounds(20, 180, 350, 40);
- leaveButton.setText("Sair");
- backButton.setText("Voltar");
- leaveButton.setName("LeaveSystem");
- backButton.setName("GoToMainMenu");
- leaveButton.addActionListener(buttonListener);
- backButton.addActionListener(buttonListener);
- leaveButton.setBounds(180, 430, 80, 40);
- backButton.setBounds(260, 430, 80, 40);
- contentPane.add(totalUserAccesses);
- contentPane.add(leaveSystem);
- contentPane.add(leaveMessage);
- contentPane.add(leaveButton);
- contentPane.add(backButton);
- this.validate();
- this.repaint();
- }
- public void leaveSystem(){
- this.setVisible(false);
- contentPane.removeAll();
- data.currentUser = new User();
- }
- private class ButtonListener implements ActionListener
- {
- @Override
- public void actionPerformed(ActionEvent arg0) {
- JButton button = (JButton)arg0.getSource();
- if (button.getName().equals("MenuOption1")) {
- contentPane.removeAll();
- createAddNewUserComponents();
- data.writeToLog("Opção 1 do menu principal selecionado por "+data.currentUser.login+".");
- }
- if (button.getName().equals("MenuOption2")) {
- contentPane.removeAll();
- createSeePrivateKeyComponents();
- data.writeToLog("Opção 2 do menu principal selecionado por "+data.currentUser.login+".");
- }
- if (button.getName().equals("MenuOption3")) {
- contentPane.removeAll();
- createViewSecretFileComponents();
- data.writeToLog("Opção 3 do menu principal selecionado por "+data.currentUser.login+".");
- }
- if (button.getName().equals("MenuOption4")) {
- contentPane.removeAll();
- createLeaveSystemComponents();
- data.writeToLog("Opção 4 do menu principal selecionado por "+data.currentUser.login+".");
- }
- if (button.getName().equals("RegisterNewUser")){
- data.writeToLog("Botão cadastrar pressionado por "+data.currentUser.login+".");
- if(!data.checkIfLoginExists(enterLogin.getText())) {
- if(enterPass.getText().equals(enterConfirmPass.getText())){
- tempPassword = enterPass.getText();
- tempCertificate = enterCertificate.getText();
- newUser = new User();
- newUser.login = enterLogin.getText();
- newUser.name = enterName.getText();
- newUser.salt = data.passHelper.generateSalt();
- enterUserGroup = (String)userGroupCombo.getSelectedItem();
- try {
- newUser.password = data.passHelper.convertPassword(enterPass.getText(),
- newUser.salt);
- } catch (Exception e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- newUser.isBlocked = false;
- newUser.accessCount = 0;
- try {
- newUser.tanList = data.tanHelper.createTanListFile(enterLogin.getText());
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- newUser.usedTan = data.tanHelper.createUsedTanList();
- try {
- newUser.certificate = CertificateHelper.loadCertificate(enterCertificate.getText());
- } catch (Exception e) {
- System.out.println("Erro ao carregar o certificado.");
- }
- newUser.tries = 0;
- data.certificateHelper.getCertificateInfo("/Users/gabrielrezende/Documents/PUC/Segurança/T3/Pacote-T3/Keys/usercert-x509.crt");;
- contentPane.removeAll();
- createConfirmNewUserComponents();
- }
- else{
- System.out.println("Senhas estão diferentes");
- }
- }
- else{
- System.out.println("login já existe");
- // TODO Mostrar mensagem para o usuário.
- }
- enterCertificate.getText();
- }
- if (button.getName().equals("ConfirmAddUser"))
- {
- data.writeToLog("Confirmação de dados aceita por "+data.currentUser.login+".");
- try {
- data.dbHelper.addUser(newUser, enterCertificate.getText());
- if (enterUserGroup.equals("Admin")){
- data.dbHelper.addUserGroup(newUser, 0);
- }
- else{
- data.dbHelper.addUserGroup(newUser, 1);
- }
- } catch (Exception e) {
- System.out.println("Erro ao adicionar usuário no banco");
- }
- contentPane.removeAll();
- createAddNewUserComponents();
- }
- if (button.getName().equals("GoToMainMenu")){
- contentPane.removeAll();
- createAdminMenuComponents();
- }
- if (button.getName().equals("LeaveSystem")){
- data.writeToLog("Botão sair pressionado por "+data.currentUser.login+".");
- leaveSystem();
- LoginWindow.getInstance().leaveSystem();
- }
- if(button.getName().equals("ConfirmKeyInfo")){
- keyHelper.verifyKey(enterPrivateKey.getText(), enterSecretPhrase.getText(),
- data.currentUser.certificate);
- data.setUserKeys(keyHelper.privateKey, keyHelper.publicKey);
- }
- if(button.getName().equals("ListSecretFiles")){
- data.accessSecretFiles(enterFolderPath.getText(), "index");
- data.writeToLog("Botão Listar de consulta pressionado por "+data.currentUser.login+".");
- createFileTableComponents();
- }
- if (button.getName().equals("GoToFilledForm"))
- {
- data.writeToLog("Confirmação de dados rejeitada por "+data.currentUser.login+".");
- contentPane.removeAll();
- createAddNewUserComponents();
- enterLogin.setText(newUser.login);
- enterName.setText(newUser.name);
- userGroupCombo.setSelectedIndex(0);
- enterPass.setText(tempPassword);
- enterConfirmPass.setText(tempPassword);
- enterCertificate.setText(tempCertificate);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement