Saturday, September 19, 2009

Redirect Default Page Bukan ke Login.jsp



Aplikasi Appfuse menggunakan acegi security, setting defaultnya dia akan selalu minta username untuk bisa membuka halaman2 didalam aplikasi, padahal nantinya aplikasi yang saya buat seharusnya bisa dibuka semua orang, tanpa perlu login terlebih dahulu, meskipun ada halaman2 yang harus login dulu untuk bisa mengaksesnya. Dalam benak saya halaman seperti profile yayasan, daftar nama2 donatur, detil masing2 donatur bisa dilihat semua pengunjung web.

Sebetulnya default page appfuse ketika membuka dari address page misalnya http://localhost:8080/tunasbangsa bukan ke login.jsp tapi ke mainMenu.html, tapi karena setting acegi security meminta username maka aplikasi ketika pertama kali dibuka senantiasa masuk ke halaman login terlebih dahulu.

Settingan yang perlu dirubah adalah berikut:
1. security.xml
Di bean=filterInvocationInterceptor, ubah/hapus semua halaman2 yang disetting hanya bisa dibuka untuk role tertentu, misalnya
/users.html*=admin
Di security.xml sudah didaftarkan role2 user pada aplikasi, kebetulan diaplikasi ini ada 2 role, "admin" dan "user", sebelumnya halaman users.html hanya bisa dibuka untuk pengunjung dengan role=admin saja, jadi selain admin maka tidak halaman tersebut bisa dibuka dg error semacam akses denied, maksudnya misalnya ada pengunjung yg sudah login tapi rolenya selain admin dan meminta halaman itu maka dia tidak bisa mengkases, apalagi apabila belum login, maka aplikasi akan redirect ke halaman login.

Di acegi security ada ROLE_ANONYMOUS role yang didefinisikan acegi untuk pengunjung yang tidak login terlebih dahulu, oleh karena itu, kita bisa menghapus line diatas atau mengubah menjadi:
/users.html*=ROLE_ANONYMOUS

di bean=methodSecurityInterceptor yang mendefinisikan method2 yg bisa diakses, modify/hapus pula line berikut:
org.ikaits.service.UserManager.getUsers=admin
Line itu mengharuskan pengunjung bertipe admin untuk bisa mengakses method getUsers, padahal method itu dipanggil ketika aplikasi meload halaman /users.html

2. action-servlet.xml
Di bean adminUrlMapping, pindahkan statement berikut ke bean urlMapping,
<prop key="/users.html">userController</prop>

Jika security.xml itu menyetting buat acegi security-nya maka action-servlet.xml menyetting request halaman2 yg di minta pengunjung, aplikasi ini menggunakan framework SpringMVC, sehingga halaman2 yg akan diminta diatur menggunakan controller, pendaftaran page apa ke controller apa ditaruh di file ini.

bean adminUrlMapping, mendaftarkan url2 yangg bisa diakses oleh admin, sedangkan urlMapping mendaftarkan url2 yang bisa diakses semua pengunjung, oleh karena itu perlu dipindahkan url /users.html tidak hanya untuk pengunjung dengan role admin.

3. menu.jsp
Melist menu2 yang muncul diaplikasi, yang letaknya ada dibawah header, saya hapus menu yang tidak perlu yaitu:
<menu:displayMenu name="FileUpload"/>
Menu ini untuk menampilkan halaman upload file

4. menu-config.xml
Hapus item berikut, item tersebut sebelumnya menjadi sub-menu dari menu "Administrasi", yang mana menu tersebut hanya diperuntukkan bagi role admin, padahal sekarang bisa dibuka untuk semua pengunjung.
<Item name="ViewUsers" title="menu.admin.users" page="/users.html"/>
Tambahkan
<Menu name="ViewUsers" title="menu.admin.users" page="/users.html" />
Sekarang url users.html menjadi menu utama seperti login, home, dsb, bukan menjadi submenu dari menu Administrasi.

Untuk halaman utama (home), saat ini aplikasi hanya menampilkan logo dan cerita singkat profile yayasan, no rekening sementara dan link untuk mendaftarkan diri sebagai donatur, yang mana setelah mendaftar tidak bisa login terlebih dahulu karena menunggu persetujuan dari admin, logo itu juga masih sementara dibuat dari memodifikasi logo yang dirasa mirip dengan tema yayasan, diambil dari john clements, Untuk situs internet yang menggunakan teknologi yang sama (appfuse) yang dibuat kantor saya adalah:
https://ib.bprks.co.id
http://careers.johnclements.com/

Awalnya mock up pertama kali akan dibuat seperti bprks, menggunakan frame, ada header, footer, leftFrame, rightFrame, dan mainFrame, sehingga untuk operasi aplikasi selanjutnya hanya meload mainFrame saja, tanpa perlu meload ulang gambar header dsb, hanya saja screen aplikasi akan terbatas luas layar saja, mainFrame akan seluas kecil karena footer senantiasa berada dibawah layar, scroll akan berada ditengah2 aplikasi, mock up seperti itu lebih cocok untuk aplikasi database yang kompleks saja tanpa terlalu memperhatikan tampilan, sedangkan aplikasi untuk yayasan ini juga berfungsi sebagai official site jadi perlu UI yang lebih bagus.

No comments: