Testing Access Control List dan Interceptor with Aconix

Posted by Bagus Candra Lesmana on August 11, 2008
Filed under cimande | 2 Comments

Tidak terasa hampir 1 bulan di jakarta dan tidak terasa juga 3 minggu dapat menyelesaikan proyek blueoxygen aconix. Dan ternyata, saya mendapatkan kesempatan pertama untuk mengetes cimande-1.3.3-sdk sebelum dia release. Sebuah kesempatan yang tidak akan pernah saya lewati, karena dengan begitu saya adalah orang pertama yang mengetes dan mengetahui kelebihan cimande-1.3.3-sdk yang terbaru.

Fitur cimande-1.3.3-sdk kali ini berbeda sekali dengan pendahulu-pendahulunya. Isu yang diusung kali ini adalah mengenai sistem security pada cimande-1.3-sdk itu sendiri. Dirasa semakin kompleks sistem yang dibangun di dalam cimande, maka isu security menjadi sangatlah penting.

Sistem security yang diusung cimande-1.3.3-sdk kali ini adalah berupa 2 hal, yaitu :
1. Interceptor
2. Access Control List / ACL

Dengan menggunakan kedua fitur tersebut, maka kita dapat mengatur hak akses sebuah user atau member terhadap action-action yang telah dibuat. Dan juga membatasi kepada user atau member untuk mengakses sebuah halaman atau biasa kita sebut workspace.

Interceptor atau dalam bahasa indonesia diartikan sebagai pemisah berfungsi untuk memisahkan sebuah workspace seorang user. Sehingga user yang satu dengan yang lainnya tidak saling mengganggu. Dalam kasus saya ini, seorang owner (Role pemilik Aconix site) tidak dapat memasuki ke workspace milik admin (Role Admin Cimande) melalui URL sekalipun. Jika salah satu role tersebut memaksa masuk ke workspace yang bukan haknya, maka akan muncul tampilan seperti dibawah ini :

Interceptor

Sedangkan Access Control List, dia berfungsi untuk membatasi hak akses akan sebuah action-action yang ada di dalam cimande atau sistemnya. Disini kita bisa mengaturnya sesuai dengan kemauan kita dan sesuai dengan kebutuhan. Sebagai contoh : seorang member hanya diperbolehkan untuk melihat saja dan tidak diijinkan untuk mengedit maupun membuat sebuah artikel. Jadi, Hak akses untuk create, edit dan delete dihilangkan dari role member.

Gambar dibawah ini akan sedikit memberi gambaran bagaimana Access Control List bekerja.

Sebelum dirubah, owner dapat membuat sebuah artikel baru dalam workspacenya.
ACL-before

Setelah hak akses untuk membuat artikel diblock oleh admin
ACL-after

NB : Preview diatas menggunakan aconix sebagai testing Interceptor dan Access Control List. Aconix adalah project terpisah dari cimande-1.3.3-sdk

Untuk lebih jelasnya, cimande-1.3.3-sdk yang terbaru dapat di download disini

Thanks
BlueOxygen Developer Team

 

 

Cimande : Bagaimana mendapatkan nama column dari sebuah Table

Posted by Bagus Candra Lesmana on August 01, 2008
Filed under cimande | 0 Comments

Cimande Workspace adalah Framework buatan indonesia, lebih tepatnya dibuat oleh Frans Thamura. Cimande menggunakan 3 komponen utama yaitu : Spring, Struts, dan Hibernate. Di dalam Cimande ini juga, kita menggunakan konsep MVC atau lebih lengkapnya Model, View, Controller. Dalam kasus kali ini, saya mencoba membahas pada bagian Model (bagian yang menangani hal-hal tentang database). Ini adalah kasus dalam project terbaru saya saat ini yaitu : Blueoxygen Aconix

Langsung saja tanpa panjang lebar, karena masih banyak kerjaan yang harus diselesaikan. Dalam kasus ini, saya menggunakan fasilitas dari Hibernate. Hanya saja di dalam cimande, hibernate yang digunakan telah mengalami beberapa modifikasi di dalamnya.

Berikut ini adalah code yang dipakai dalam menggunakan hibernate dalam cimande untuk mendapatkan nama-nama column dalam sebuah table.



import org.hibernate.HibernateException;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.opensymphony.xwork2.ActionSupport;

public class metadata extends ActionSupport {
private int count;
private String[] input;

public String execute(){
try {
ResultSet con = hsf.createSession().connection().createStatement().executeQuery("SELECT * FROM article";

count = con.getMetaData().getColumnCount();
input = new String[count];
for(int i = 1 ; i < count ; i++){
input[i] = con.getMetaData().getColumnName(i);
System.out.println(input[i]);
}

} catch (HibernateException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return SUCCESS;
}
}

// Getter and Setter

Code diatas merupakan code yang digunakan menggunakan hibernate, selain menggunakan hibernate juga bisa menggunakan JDBC.