package org.itscool.weber.action;

import org.itscool.weber.controller.Globals;
import org.itscool.weber.user.RoleException;
import org.itscool.weber.user.User;

/**
 * ログインアクションを実行します<BR>
 * このアクションはフレームワークが標準で提供するログインアクションです<BR>
 * ログインアクションが呼ばれるとリクエストパラメータにセットされたユーザ情報
 * (org.itscool.role.User）インスタンスに対してロールチェックを行います<BR>
 * ロールチェックは以下の手順で行われます<BR>
 * <BR>
 * 　(1) リクエストパラメータよりユーザ情報の取得<BR>
 * 　　　リクエストパラメータよりorg.itscool.role.Userインスタンスを取得します<BR>
 * 　(2) フレームワークに登録されているユーザ情報の検索<BR>
 * 　　　<roles>属性に定義されているユーザ情報ファイルから登録済みのユーザ情報
 * 　　　を検索します<BR>
 * 　(3) ユーザ情報の照合<BR>
 * 　　　検索結果と入力されたユーザ情報との比較を行います<BR>
 * 　(4) ユーザ情報の登録<BR>
 * 　　　認証に成功したユーザ情報をセッションパラメータに登録します<BR>
 * <BR>
 * セッションパラメータに登録されたユーザ情報を破棄する場合はorg.itscool.weber.LogoutAction
 * を使用します。
 * 
 * @author KANO
 * @since jdk1.4.1
 * @version 1.00A 2004/11/1
 */
public class LoginAction extends Action {
    
    public String doExecute(ActionBucket bucket){
        try{
            User user = (User)bucket.getForm();

            if (!isUserCheck(bucket.getRoles(), user)) {
                return Globals.RET_ROLE_FAIL;
            } else {
                bucket.setAttributeFromSession(Globals.REQ_PARAM_USER, user);
                return Globals.RET_ROLE_SUCCESS;
            }
        }catch(RoleException re){
            throw new LoginFailedException();
        }

    }

}
