Coverage Report - jp.co.y_net.amm.page.EntryPasswordPage
 
Classes in this File Line Coverage Branch Coverage Complexity
EntryPasswordPage
0%
0/43
0%
0/8
0
EntryPasswordPage$1
0%
0/6
0%
0/2
0
EntryPasswordPage$2
0%
0/3
0%
0/2
0
EntryPasswordPage$3
0%
0/3
0%
0/2
0
EntryPasswordPage$4
0%
0/38
0%
0/12
0
 
 1  0
 package jp.co.y_net.amm.page;
 2  
 
 3  
 import java.util.List;
 4  
 
 5  
 import jp.co.y_net.amm.AppSession;
 6  
 import jp.co.y_net.amm.common.AppStringUtils;
 7  
 import jp.co.y_net.amm.common.AppUtils;
 8  
 import jp.co.y_net.amm.common.CalcHash;
 9  
 import jp.co.y_net.amm.common.ResourceReader;
 10  
 import jp.co.y_net.amm.dao.AppDef;
 11  
 import jp.co.y_net.amm.dao.Org;
 12  
 import jp.co.y_net.amm.dao.Pwtckt;
 13  
 import jp.co.y_net.amm.dao.Usr;
 14  
 
 15  
 import org.apache.wicket.ajax.AjaxRequestTarget;
 16  
 import org.apache.wicket.markup.html.basic.Label;
 17  
 import org.apache.wicket.markup.html.form.Button;
 18  
 import org.apache.wicket.markup.html.form.Form;
 19  
 import org.apache.wicket.markup.html.form.PasswordTextField;
 20  
 import org.apache.wicket.markup.html.link.ExternalLink;
 21  
 import org.apache.wicket.markup.html.panel.FeedbackPanel;
 22  
 import org.apache.wicket.model.Model;
 23  
 import org.apache.wicket.model.PropertyModel;
 24  
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 25  
 
 26  
 public class EntryPasswordPage extends CommonFrameA {
 27  
         private static final long serialVersionUID = 1L;
 28  
 
 29  
     /*
 30  
      * 画面入力値
 31  
      */
 32  
     public String passwordValue;
 33  
     public String password2Value;
 34  
     
 35  
     /*
 36  
      * 画面の状態
 37  
      */
 38  0
     private boolean complete = false;
 39  
         
 40  0
         public EntryPasswordPage(PageParameters pageParams) {
 41  
 
 42  0
             add(new ExternalLink("lnkTop", ResourceReader.getStringQuick("url.back.top")));
 43  
         
 44  
         /* フィードバックメッセージ */
 45  0
         final FeedbackPanel feedbackPanel = new FeedbackPanel("feedback");
 46  0
         feedbackPanel.setOutputMarkupId(true);
 47  0
         add(feedbackPanel);
 48  
         
 49  0
         final Form<Void> form  = new Form<Void>("form");
 50  0
         form.setOutputMarkupId(true);
 51  0
         form.setVisible(false); // エラーチェックが完了するまで非表示とする。
 52  0
         add(form);
 53  
         
 54  
         /* パラメータチェック ------------------------------------------- */
 55  0
         String paramValue = pageParams.get("value").toString();
 56  0
         validItem(paramValue, "パラメータvalue", 1, 16);
 57  
         //if(hasInputError()) return; 
 58  0
         if(hasInputError()) {
 59  
             /* 有効文字数を表示してしまう具体的なエラーメッセージを避ける */
 60  0
             AppSession.get().getFeedbackMessages().clear();
 61  0
             error("このURLは無効です。");
 62  0
             return;
 63  
         }
 64  
         
 65  
         /*  有効なランダムチケットが無い場合は、メッセージを表示する。*/
 66  0
         Pwtckt cnd = new Pwtckt();
 67  0
         cnd.setTicket(paramValue);
 68  
         final Pwtckt dbTicket;
 69  0
         List<Pwtckt> tickets = pwtcktDao.get(cnd);
 70  0
         if(tickets.size() != 1) {
 71  0
             error("このURLは無効です。");
 72  0
             return;
 73  
         } else {
 74  0
             dbTicket = tickets.get(0);
 75  
         }
 76  0
         if(dbTicket.getStatus().equals(Pwtckt.STATUS_受付中) == false) {
 77  0
             error("このURLは無効です。");
 78  0
             return;
 79  
         }
 80  0
         if(dbTicket.getTicketdate() < AppUtils.createNowLong()) {
 81  0
             error("このURLは期限切れです。もう一度手続きを行ってください。");
 82  
             
 83  0
             dbTicket.setStatus(Pwtckt.STATUS_有効期限切れ);
 84  0
             pwtcktDao.update(dbTicket, AppDef.USERID_NONE); // 【更新処理】
 85  
             
 86  0
             return;
 87  
         }
 88  
         
 89  0
         form.setVisible(true); 
 90  
         /* -------------------------------------------------------------------------------------------------------*/
 91  
         /* Form内の設定 */
 92  
         
 93  
         /* 完了メッセージ */
 94  0
         Model<String> resultMessageModel = new Model<String>() {
 95  
             @Override
 96  
             public String getObject() {
 97  
                 //String msg = "パスワードを登録してください。<br />パスワード登録後、本登録完了となります。<br />パスワードは8文字以上、16文字以内で入力してください。";
 98  0
                 String msg = "パスワードを登録してください。<br />パスワードは8文字以上、16文字以内で入力してください。";
 99  0
                 if(complete) {
 100  0
                     msg = "パスワードの登録が完了しました。";
 101  
                 }
 102  0
                 return msg;
 103  
             }
 104  
         };
 105  0
         final Label resutlMessage = new Label("resutlMessage", resultMessageModel);
 106  0
         resutlMessage.setEscapeModelStrings(false);
 107  0
         form.add(resutlMessage);
 108  
         
 109  0
         PasswordTextField password = new PasswordTextField("password", new PropertyModel<String>(this, "passwordValue")){
 110  
             @Override
 111  
             public boolean isVisible() {
 112  
                 /* 完了後の状態なら表示しない */
 113  0
                 return complete == false;
 114  
             }
 115  
         };
 116  0
         form.add(password);
 117  0
         PasswordTextField password2 = new PasswordTextField("password2", new PropertyModel<String>(this, "password2Value")){
 118  
             @Override
 119  
             public boolean isVisible() {
 120  
                 /* 完了後の状態なら表示しない */
 121  0
                 return complete == false;
 122  
             }
 123  
         };
 124  0
         form.add(password2);
 125  
         
 126  0
         Button btnSubmit = new ConfirmAjaxButton("btnSubmit"){
 127  
             @Override
 128  
             protected String getConfirmMessage() {
 129  0
                 return "パスワードを登録します。";
 130  
             }
 131  
             @Override
 132  
             boolean executeBefore() {
 133  
                 /* 入力値変換 */
 134  0
                 passwordValue = AppStringUtils.trim(passwordValue);
 135  0
                 password2Value = AppStringUtils.trim(password2Value);
 136  
                 
 137  
                 /* 入力値チェック */
 138  0
                 validItemAscii(passwordValue, "パスワード", 8, 16);
 139  0
                 validItemAscii(password2Value, "パスワード確認用", 8, 16);
 140  0
                 if(passwordValue.equals(password2Value) == false) {
 141  0
                     error("入力されたパスワードが一致しません。");
 142  
                 }
 143  0
                 if(hasInputError()) return false; // ここまででエラーチェック
 144  0
                 return true;
 145  
             }
 146  
             @Override
 147  
             void executeAfter(AjaxRequestTarget target) {
 148  
                 /* データアクセス 機関申請者のパスワード登録 */
 149  0
                 Usr usr = usrDao.getByUsrid(dbTicket.getUsrid());
 150  0
                 if(usr == null) {
 151  0
                     error("(ユーザ情報が登録されていません。)");
 152  0
                     return;
 153  
                 }
 154  0
                 if(Usr.STATUS_退会 == usr.getStatus()) {
 155  
                     /* 仮登録中に退会処理をされた場合を考慮 */
 156  0
                     error("(ユーザ情報が取り消されています。)");
 157  0
                     return;
 158  
                 }
 159  
                 
 160  
                 /* ユーザ情報更新 */
 161  0
                 String pwhash = CalcHash.passowrdHash(passwordValue, usr.getLoginid());
 162  0
                 usr.setPwhash(pwhash);
 163  0
                 usr.setModpwdate(AppUtils.createNowLong());
 164  0
                 usr.setJoindate(AppUtils.createNowLong()); // 入会日時
 165  0
                 usr.setStatus(Usr.STATUS_登録済み);
 166  
                 
 167  0
                 usrDao.update(usr, AppDef.USERID_NONE); // 【更新処理】
 168  
                 
 169  
                 
 170  
                 /* 機関情報更新 */
 171  0
                 Org org = orgDao.getByOrgid(usr.getOrgid());
 172  0
                 if(org == null) {
 173  0
                     error("(組織情報が登録されていません。)");
 174  0
                     return;
 175  
                 }
 176  0
                 org.setStatus(Org.STATUS_本登録済み);
 177  0
                 org.setJoindate(AppUtils.createNowLong()); // 本登録日時
 178  
                 
 179  0
                 orgDao.update(org, AppDef.USERID_NONE); // 【更新処理】
 180  
                 
 181  
                 
 182  
                 /* パスワード受付管理情報更新 */
 183  0
                 dbTicket.setStatus(Pwtckt.STATUS_完了);
 184  0
                 dbTicket.setCompletedate(AppUtils.createNowLong());
 185  
                 
 186  0
                 pwtcktDao.update(dbTicket, AppDef.USERID_NONE); // 【更新処理】
 187  
                 
 188  
                 
 189  
                 /* 完了状態へ移行 */
 190  0
                 complete = true;
 191  
                 
 192  
                 /* 画面コンポーネントの再描画 */
 193  0
                 target.add(form);
 194  0
             }
 195  
             @Override
 196  
             public boolean isVisible() {
 197  
                 /* 完了後の状態ならボタンを表示しない */
 198  0
                 return complete == false;
 199  
             }
 200  
         };
 201  0
         form.add(btnSubmit);
 202  
         
 203  0
     }
 204  
         
 205  
 }