01: package dinamica.security;
02:
03: import dinamica.*;
04: import javax.sql.DataSource;
05: import java.sql.*;
06:
07: /**
08: * Change current user password using Dinamica
09: * security model database structure (table s_user).
10: * <br><br>
11: * (c) 2004 Martin Cordova<br>
12: * This code is released under the LGPL license<br>
13: * Dinamica Framework - http://www.martincordova.com
14: * @author Martin Cordova (dinamica@martincordova.com)
15: * */
16: public class ChangePassword extends GenericTransaction {
17:
18: /* (non-Javadoc)
19: * @see dinamica.GenericTransaction#service(dinamica.Recordset)
20: */
21: public int service(Recordset inputParams) throws Throwable {
22:
23: int rc = 0;
24:
25: //reuse superclass code
26: super .service(inputParams);
27:
28: //get security datasource
29: String jndiName = (String) getContext().getAttribute(
30: "dinamica.security.datasource");
31: if (jndiName == null)
32: throw new Throwable(
33: "Context attribute [dinamica.security.datasource] is null, check your security filter configuration.");
34:
35: //get datasource and DB connection
36: DataSource ds = Jndi.getDataSource(jndiName);
37: Connection conn = ds.getConnection();
38: this .setConnection(conn);
39:
40: try {
41:
42: conn.setAutoCommit(false);
43:
44: //get db channel
45: Db db = getDb();
46:
47: //get user primary key - required for password history
48: Recordset user = db.get(getSQL(
49: getResource("getuserkey.sql"), inputParams));
50: user.next();
51: Integer userID = user.getInteger("user_id");
52: inputParams.setValue("userid", userID);
53:
54: //execute update query
55: db.exec(getSQL(getResource("update.sql"), inputParams));
56:
57: //execute update query
58: db.exec(getSQL(getResource("insert-passlog.sql"),
59: inputParams));
60:
61: conn.commit();
62:
63: } catch (Throwable e) {
64: if (conn != null)
65: conn.rollback();
66: throw e;
67: } finally {
68: if (conn != null)
69: conn.close();
70: }
71:
72: return rc;
73:
74: }
75:
76: }
|