Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package aplivalidarusuarios;
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.EOFException;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.util.Scanner;
- import java.util.Calendar;
- import java.util.ArrayList;
- public class ApliValidarUsuarios {
- public static Scanner sc = new Scanner(System.in);
- public static void main(String[] args) {
- // Programación en JAVA
- // Práctica bloque 6: lectura y escritura de ficheros
- // Realizado por Rubén Segura Romo, 1º DAW
- //En el siguiente menú muestro las diversas opciones de trabajo
- //del programa y ejecuto los métodos que correspondan a cada acción
- int opcion;
- boolean fin = false;
- do{
- opcion = menu();
- switch(opcion){
- case 1:
- darAltaUsuario();
- break;
- case 2:
- mostrarUsuarios();
- break;
- case 3:
- entrarAlSistema();
- break;
- case 4:
- mostrarLogAutorizados();
- break;
- case 5:
- mostrarLogNoAutorizados();
- break;
- case 6:
- System.out.println("");
- System.out.println("** ¡Hasta otra! **");
- System.out.println("** Ha finalizado correctamente la aplicación **");
- fin = true;
- }
- }while(!fin);
- }
- public static void darAltaUsuario(){
- //Voy a utilizar Objetos de la clase usuario para darlos de alta
- FileOutputStream fos = null;
- ObjectOutputStream oos = null;
- String user="";
- String password="";
- ArrayList<String> us = new ArrayList<String>();
- Usuario u = null;
- // Con los booleanos voy a controlar cuando us usuario o contraseña son válidos o no
- boolean usu = false;
- boolean pass = false;
- try{
- fos = new FileOutputStream("/Usuario/usuarios.bin",true);
- oos = new ObjectOutputStream(fos);
- System.out.println("-- Se procede a la creación de un nuevo usuario -- ");
- do{
- System.out.print("-- Introduce nombre de usuario: ");
- user = sc.nextLine();
- if(us.contains(user)){
- System.out.println("¡El usuario ya existe en el sistema!");
- }else if(user.length() < 8 && user.toLowerCase().charAt(0) >= 'a' && user.toLowerCase().charAt(0) <= 'z' ){
- System.out.println("¡Usuario no válido!");
- System.out.println("Compruebe que su contraseña tiene un longitud mínima de 8 caracteres alfanuméricos");
- }else{
- //si ha pasado todos los filtros digo que el usuario es válido y además
- //voy a guardar el usuario en un arraylist para luego utilizarlo como filtro
- //al añadir nuevos usuario
- usu = true;
- us.add(user);
- }
- }while(usu == false); //Con la contraseña sigo el mismo proceso que para el usuairo
- do{
- System.out.print("-- Introduce contraseña: ");
- password = sc.nextLine();
- if(password.length() < 8){
- System.out.println("¡Contraseña no válida!");
- System.out.println("Compruebe que su contraseña tiene un longitud mínima de 8 caracteres"
- + " alfanuméricos y al menos una letra es mayúscula, por favor");
- }else{
- pass = true;
- }
- }while(pass == false);
- //Finalmente creo un objeto con el usuario y contraseña y guardo el objeto.
- u = new Usuario(user, password);
- oos.writeObject(u);
- System.out.println("-- Usuario registrado correctamente --");
- }catch(FileNotFoundException e){
- System.err.println(e.getMessage());
- }catch(IOException e){
- System.err.println(e.getMessage());
- }finally{
- try{
- if(fos != null){
- fos.close();
- }
- if(oos != null){
- oos.close();
- }
- }catch(IOException e){
- System.err.println(e.getMessage());
- }
- }
- }
- public static void mostrarUsuarios(){
- FileInputStream fis = null;
- ObjectInputStream ois = null;
- Usuario u = null;
- try{
- fis = new FileInputStream("/Usuario/usuarios.bin");
- ois = new ObjectInputStream(fis);
- System.out.println("-- USUARIOS REGISTRADOS EN EL SISTEMA --");
- // Leo los objetos del fichero de usuarios.bin
- // y muestro los usuarios mediante un metodo de la clase
- // Usuario para obtener el nombre de usuario
- while(true){
- u = (Usuario) ois.readObject();
- System.out.println("Usuario: " + u.getUser());
- }
- }catch(FileNotFoundException e){
- System.err.println(e.getMessage());
- }catch(EOFException e){
- System.err.println(e.getMessage());
- }catch(ClassNotFoundException e){
- System.err.println(e.getMessage());
- }catch(IOException e){
- System.err.println(e.getMessage());
- }finally{
- try{
- if(fis != null){
- fis.close();
- }
- if(ois != null){
- ois.close();
- }
- }catch(IOException e){
- System.err.println(e.getMessage());
- }
- }
- }
- public static void entrarAlSistema(){
- //Para entrar al sistema voy a ir leyendo objetos y comparandolos
- // con dos string(usuario y contraseña) que introducirá el usuario
- FileInputStream fis = null;
- ObjectInputStream ois = null;
- Usuario u = null;
- String user="";
- String password="";
- try{
- fis = new FileInputStream("/Usuario/usuarios.bin");
- ois = new ObjectInputStream(fis);
- System.out.println("-- ACCESO AL SISTEMA --");
- System.out.print("-- Introduce tu nombre de usuario: ");
- user = sc.nextLine();
- System.out.print("-- Introduce tu contraseña: ");
- password = sc.nextLine();
- while(true){ //voy leyendo el fichero usuario.bin y cargando objetos
- u = (Usuario) ois.readObject();
- if(u.getUser().equals(user) && u.getPassword().equals(password)){
- //si coinciden muestro el mensaje de bienvenida y llamo al método
- //que se encarga de crear el Log de usuario autorizados
- creaLogAutorizados(user);
- System.out.println("");
- System.out.println("** ¡Bienvenido! **");
- System.out.println("** Has accedido correctamente al sistema **");
- }else{
- //si no funciona muestro mensaje de error y llamo al método
- //que se encarga de crear el log de usuarios no autorizados
- System.out.println("¡ERROR! Acceso no permitido");
- creaLogNoAutorizados(user);
- }
- }
- }catch(FileNotFoundException e){
- System.err.println(e.getMessage());
- }catch(EOFException e){
- System.err.println(e.getMessage());
- }catch(ClassNotFoundException e){
- System.err.println(e.getMessage());
- }catch(IOException e){
- System.err.println(e.getMessage());
- }finally{
- try{
- if(fis != null){
- fis.close();
- }
- if(ois != null){
- ois.close();
- }
- }catch(IOException e){
- System.err.println(e.getMessage());
- }
- }
- }
- public static void creaLogAutorizados(String u){
- //Creo un fichero binario para el log al cual le viene como
- //parámetro el nombre usuario utilizado al entrar en el sistema
- FileOutputStream fos = null;
- DataOutputStream dos = null;
- // declaro las variables y las inicializo con los valores necesarios
- // utilizando la clase Calendar
- Calendar c = Calendar.getInstance();
- int dia = c.get(Calendar.DAY_OF_MONTH);
- int mes = c.get(Calendar.MONTH);
- int anio = c.get(Calendar.YEAR);
- int hora = c.get(Calendar.HOUR);
- int minuto = c.get(Calendar.MINUTE);
- int segundo = c.get(Calendar.SECOND);
- try{
- //voy escribiendo todos los datos en el fichero
- fos = new FileOutputStream("/Log/logAccesoAutorizado.log",true);
- dos = new DataOutputStream(fos);
- dos.writeUTF(u);
- dos.writeInt(dia);
- dos.writeInt(mes);
- dos.writeInt(anio);
- dos.writeInt(hora);
- dos.writeInt(minuto);
- dos.writeInt(segundo);
- }catch(FileNotFoundException e){
- System.err.println(e.getMessage());
- }catch(IOException e){
- System.err.println(e.getMessage());
- }finally{
- try{
- if(fos != null){
- fos.close();
- }
- if(dos != null){
- dos.close();
- }
- }catch(IOException e){
- System.err.println(e.getMessage());
- }
- }
- }
- public static void creaLogNoAutorizados(String u){
- //Exactamente igual que el método anterior solo que en otro fichero
- FileOutputStream fos = null;
- DataOutputStream dos = null;
- Calendar c = Calendar.getInstance();
- int dia = c.get(Calendar.DAY_OF_MONTH);
- int mes = c.get(Calendar.MONTH);
- int anio = c.get(Calendar.YEAR);
- int hora = c.get(Calendar.HOUR);
- int minuto = c.get(Calendar.MINUTE);
- int segundo = c.get(Calendar.SECOND);
- try{
- fos = new FileOutputStream("/uLog/logAccesoNoAutorizado.log",true);
- dos = new DataOutputStream(fos);
- dos.writeUTF(u);
- dos.writeInt(dia);
- dos.writeInt(mes);
- dos.writeInt(anio);
- dos.writeInt(hora);
- dos.writeInt(minuto);
- dos.writeInt(segundo);
- }catch(FileNotFoundException e){
- System.err.println(e.getMessage());
- }catch(IOException e){
- System.err.println(e.getMessage());
- }finally{
- try{
- if(fos != null){
- fos.close();
- }
- if(dos != null){
- dos.close();
- }
- }catch(IOException e){
- System.err.println(e.getMessage());
- }
- }
- }
- public static void mostrarLogAutorizados(){
- //Voy a ir leyendo el fichero binario
- FileInputStream fis = null;
- DataInputStream dis = null;
- //declaro variables que utilizaré para recoger datos del fichero
- String u;
- int dia;
- int mes;
- int anio;
- int hora;
- int minuto;
- int segundo;
- try{
- fis = new FileInputStream("/Log/logAccesoAutorizado.log");
- dis = new DataInputStream(fis);
- System.out.println("-- LOG DE ACCESOS AUTORIZADOS --");
- while (true) {
- //Voy recorriendo el fichero y asignandole a cada variable su valor
- //para finalmente mostrarlo por pantalla
- u = dis.readUTF();
- dia = dis.readInt();
- mes = dis.readInt();
- anio = dis.readInt();
- hora = dis.readInt();
- minuto = dis.readInt();
- segundo = dis.readInt();
- System.out.println("USUARIO: " + u + " FECHA: " + dia + "/" + mes +
- "/" + anio + " HORA: " + hora + ":" + minuto + ":" + segundo);
- }
- }catch(FileNotFoundException e){
- System.err.println(e.getMessage());
- }catch(EOFException e){
- System.err.println(e.getMessage());
- }catch(IOException e){
- System.err.println(e.getMessage());
- }finally{
- try{
- if(fis != null){
- fis.close();
- }
- if(dis != null){
- dis.close();
- }
- }catch(IOException e){
- System.err.println(e.getMessage());
- }
- }
- }
- public static void mostrarLogNoAutorizados(){
- //Exactamente igual que el método anterior
- FileInputStream fis = null;
- DataInputStream dis = null;
- String u;
- int dia;
- int mes;
- int anio;
- int hora;
- int minuto;
- int segundo;
- try{
- fis = new FileInputStream("/Log/logAccesoNoAutorizado.log");
- dis = new DataInputStream(fis);
- System.out.println("-- LOG DE ACCESOS NO AUTORIZADOS --");
- while (true) {
- u = dis.readUTF();
- dia = dis.readInt();
- mes = dis.readInt();
- anio = dis.readInt();
- hora = dis.readInt();
- minuto = dis.readInt();
- segundo = dis.readInt();
- System.out.println("USUARIO: " + u + " FECHA: " + dia + "/" + mes +
- "/" + anio + " HORA: " + hora + ":" + minuto + ":" + segundo);
- }
- }catch(FileNotFoundException e){
- System.err.println(e.getMessage());
- }catch(EOFException e){
- System.err.println(e.getMessage());
- }catch(IOException e){
- System.err.println(e.getMessage());
- }finally{
- try{
- if(fis != null){
- fis.close();
- }
- if(dis != null){
- dis.close();
- }
- }catch(IOException e){
- System.err.println(e.getMessage());
- }
- }
- }
- public static int menu(){
- int op;
- System.out.println("***** MENÚ VALIDADOR DE USUARIOS *****");
- System.out.println("1. Dar de alta un nuevo usuario");
- System.out.println("2. Mostrar usuarios del sistema");
- System.out.println("3. Entrar al sistema");
- System.out.println("4. Mostrar el fichero 'LOG' de los usuarios autorizados");
- System.out.println("5. Mostrar el fichero 'LOG' de los usuarios no autorizados");
- System.out.println("6. Salir");
- System.out.println("");
- System.out.print("Elige una opción: ");
- op = sc.nextInt();
- sc.nextLine();
- return op;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement