El_gringo | bah allez, j'essaye de le copie ds le forum, à la brute ! ça sera + simple :
Code :
- /*
- * Utilisateur.java
- *
- * Created on 10 juin 2002, 17:12
- */
- package com.damaris.database;
- import java.beans.*;
- import java.sql.*;
- import com.damaris.ldsweb.*;
- /**
- * Cette classe stocke les données relatives à un utilisateur.
- * Elle permet également de récupérer un utilisateur
- * @author mc
- */
- public class Utilisateur extends Object implements java.io.Serializable {
-
- // Nom de la table
- private static final String TABLE_USERS = "UTILISATEURS";
-
- // Nom des colones
- private static final String ROW_UTIL = "UTIL";
- private static final String ROW_PASSWORD = "PASSWORD";
- private static final String ROW_NOMUTIL = "NOMUTIL";
- private static final String ROW_CPT = "CPT";
- private static final String ROW_CONFIG = "CONFIG";
-
- // Nom des propriétés
- private static final String PROP_SAMPLE_PROPERTY = "SampleProperty";
- private static final String PROP_LOGIN = "Login";
- private static final String PROP_PASSWORD = "Password";
- private static final String PROP_NAME = "Name";
-
- private String sampleProperty;
-
- private PropertyChangeSupport propertySupport;
-
- private String login;
- private String password;
- private String name;
- private boolean isPwdCrypted;
- private boolean isManager;
- private boolean isLoaded;
-
- /** Creates new Utilisateur
- */
- public Utilisateur() {
- init();
- }
-
- /** Creates new Utilisateur. Initialise ses membre <CODE>login</CODE> et <CODE>password</CODE>.
- * @param login Valeur initiale du login.
- * @param password Valeur initiale du mot de passe
- */
- public Utilisateur(String login, String password) {
- init();
- this.setLogin (login);
- this.setPassword (password);
- }
-
- private void init () {
- this.propertySupport = new PropertyChangeSupport( this );
- this.isPwdCrypted = false;
- this.isManager = false;
- this.isLoaded = false;
- this.login = "";
- this.password = "";
- this.name = "";
- }
-
- public String getSampleProperty() {
- return this.sampleProperty;
- }
-
- public void setSampleProperty(String value) {
- String oldValue = this.sampleProperty;
- this.sampleProperty = value;
- propertySupport.firePropertyChange(PROP_SAMPLE_PROPERTY, oldValue, this.sampleProperty);
- }
-
- /** accesseur en lecture de l'attribut <CODE>login</CODE>
- * @return <CODE>login</CODE>
- */
- public String getLogin() {
- return this.login;
- }
-
- /** Accesseur en écriture de l'attribut <CODE>login</CODE>.
- * Lance un évênement PropertyChange.
- * @param value Nouvelle valeur de <CODE>login</CODE>.
- */
- public void setLogin(String value) {
- String oldValue = this.login;
- this.login = value.toUpperCase ();
- propertySupport.firePropertyChange(PROP_LOGIN, oldValue, login);
- }
-
- /** accesseur en lecture de l'attribut <CODE>password</CODE>
- * @return <CODE>password</CODE>
- */
- public String getPassword() {
- return this.password;
- }
-
- /** accesseur en lecture de l'attribut <CODE>password</CODE> pour requête dans la base de données.
- * Si
- * @return <CODE>password</CODE> si, dans la base de données le mot de passe n'est pas codé <CODE>(isPwdCrypted = false)</CODE>
- * Si il y est codé, la valeur de retour de lengthmot de passe codé. Selon l'algorithme de codage Damaris <CODE>(Crypt/Decrypt)</CODE>
- */
- public String getPasswordInTable () throws JLdsServletException{
- if (this.isPwdCrypted)
- return getCrypted (this.password);
- else
- return this.password;
- }
-
-
- /** Accesseur en écriture de l'attribut <CODE>password</CODE>.
- * Lance un évênement PropertyChange.
- * @param value Nouvelle valeur de <CODE>password</CODE>
- */
- public void setPassword(String value) {
- String oldValue = this.password;
- this.password = value.toUpperCase ();
- propertySupport.firePropertyChange(PROP_PASSWORD, oldValue, this.password);
- }
-
- /** accesseur en lecture de l'attribut <CODE>name</CODE>
- * @return <CODE>name</CODE>
- */
- public String getName() {
- return this.name;
- }
-
- /** Accesseur en écriture de l'attribut <CODE>name</CODE>.
- * Lance un évênement PropertyChange.
- * @param value Nouvelle valeur de <CODE>name</CODE>
- */
- public void setName(String value) {
- String oldValue = this.name;
- this.name = value;
- propertySupport.firePropertyChange(PROP_NAME, oldValue, this.name);
- }
-
- /** teste si l'utilisateur en cours à les droits d'un manager.
- * @return <CODE>true</CODE> si l'utilisateur en cours à des droits de manager
- */
- public boolean isManager() {
- return this.isManager;
- }
- /** teste si les données de l'utilisateur en cours ont été récupérées depuis la bd.
- * @return <CODE>true</CODE> les données de l'utilisateur en cours ont été récupérées depuis la bd.
- */
- public boolean isLoaded () {
- return this.isLoaded;
- }
-
- /** récupère les données liées au login et au mot de passe de l'instance dans la table UTILISATEURS.
- * Attention: les membre <CODE>login</CODE> et <CODE>password</CODE> doivent avoir été initialisés, sinon la fonction retournera <CODE>false</CODE> sans rien récupérer.
- * @param stmt Statement permettant de récupérer les données dans la table UTILISATEURS
- * @throws JLdsDataException Lancée si l'enregistrement correspondant au login et mot de passe n'a pas été trouvé ou si une erreur SQL à été reçue.
- * @return <CODE>true</CODE> si les données ont été récupérées, <CODE>false</CODE> si l'enregistrement recherché n'a pas été trouvé
- */
- public boolean getDataFromTable(java.sql.Connection con) throws JLdsDataException, JLdsServletException {
- if (this.login == null || this.password == null)
- return false;
-
- String colones = ROW_UTIL + ", " + ROW_PASSWORD + ", " + ROW_NOMUTIL + ", " + ROW_CONFIG;
- String sqlQuery = "select " + colones + " from " + TABLE_USERS + " where (" + ROW_UTIL + "='" + this.login + "')";
- //sqlQuery += " and " + ROW_PASSWORD + "=" + "'" + getCrypted (this.password) + "'";
-
- try {
- java.sql.Statement stmt = con.createStatement ();
- ResultSet res = stmt.executeQuery (sqlQuery);
- if (!res.next ())
- return false;
-
- // Si le mot de passe entré ne correspond pas à celui dans la base de donnée
- if (!initFromResultSet (res))
- return false;
- this.isLoaded = true;
- stmt.close ();
- }
- catch (SQLException e) {
- e.printStackTrace();
- throw new JLdsDataException ("Une erreur est survenue lors de l'execution/lecture des résultats, de la requète :\n\t" + sqlQuery, e);
- }
- return true;
- }
-
- private boolean initFromResultSet (ResultSet res) throws SQLException, JLdsServletException {
- String loginFromTable = res.getString(1).trim ();
- String pwdFromTable = res.getString(2).trim ();
- String nameFromTable = res.getString(3).trim ();
- String configFromTable= res.getString(4).trim ();
-
- if (configFromTable.charAt (0) == 'X')
- this.isManager = true;
- if (configFromTable.charAt (1) == 'X')
- this.isPwdCrypted = true;
-
- if (this.isPwdCrypted){
- if (!(this.password.equals(getDecrypted (pwdFromTable))))
- return false;
- }
- else {
- if (this.password.equals (pwdFromTable))
- return false;
- }
-
- this.name = nameFromTable;
-
- return true;
- }
-
- private static String getCrypted (String nonCrypted) throws JLdsServletException {
- try {
- char [] charsBuffer = new char[nonCrypted.length ()];
- nonCrypted.getChars (0, nonCrypted.length (), charsBuffer, 0);
- for (int i = 0; i < charsBuffer.length; i++) {
- charsBuffer[i] = (char)((int)charsBuffer[i] -17 +i);
- }
- return (String.copyValueOf (charsBuffer));
- } catch (Exception e) {
- throw new JLdsServletException ("Erreur dans le cryptage de " + nonCrypted, e);
- }
- }
-
- private static String getDecrypted (String crypted) throws JLdsServletException {
- try {
- char [] charsBuffer = new char[crypted.length ()];
- crypted.getChars (0, crypted.length (), charsBuffer, 0);
- for (int i = 0; i < charsBuffer.length; i++) {
- charsBuffer[i] = (char)((int)charsBuffer[i] +17 -i);
- }
- return (String.copyValueOf (charsBuffer));
- } catch (Exception e) {
- throw new JLdsServletException ("Erreur dans le décryptage de " + crypted, e);
- }
- }
-
- public void addPropertyChangeListener(PropertyChangeListener listener) {
- propertySupport.addPropertyChangeListener(listener);
- }
-
- public void removePropertyChangeListener(PropertyChangeListener listener) {
- propertySupport.removePropertyChangeListener(listener);
- }
-
- }
|
Message édité par El_gringo le 17-06-2002 à 15:14:49
|