// Path: try_java_ee7-web/src/main/java/enterprisegeeks/entity/Account.java
// @Vetoed //CDI対象外
// @Entity
// @NamedQueries({
//     @NamedQuery(name = "Account.nameOrEmali", query = "select a from Account a where a.name = :name or a.email = :email")
//     , @NamedQuery(name = "Account.byToken", query="select a from Account a where a.token = :token")}
// )
// @Table(uniqueConstraints = @UniqueConstraint(columnNames = {"name", "email"}))
// public class Account implements Serializable{
//     
//     @NotNull(message = "{required}")
//     @Size(message = "{required}", min = 1) // 未入力の場合、空文字になるため。
//     @Id
//     @Column(length = 40)
//     private String name;
//     
//     @Email(message = "{email.invalid}")
//     @NotNull(message = "{required}")
//     @Size(message = "{required}", min = 1)
//     @Column(length = 200, nullable = false)
//     private String email;
//     
//     @Column(length = 32, nullable = true )
//     private String gravaterHash;
//     
//     @Column(length = 40, nullable = true )
//     private String token;
//     
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getGravaterHash() {
//         return gravaterHash;
//     }
// 
//     public void setGravaterHash(String gravaterHash) {
//         this.gravaterHash = gravaterHash;
//     }
//     
//     public String getGravatar() {
//         return "https://www.gravatar.com/avatar/" + gravaterHash;
//     }
// 
//     public String getToken() {
//         return token;
//     }
// 
//     public void setToken(String token) {
//         this.token = token;
//     }
// }
// 
// Path: try_java_ee7-web/src/main/java/enterprisegeeks/model/Auth.java
// @SessionScoped
// @Named
// public class Auth implements Serializable{
//     
//     private boolean loggedIn;
//     
//     private Room selected;
//     
//     private Account account = new Account();
// 
//     public boolean isLoggedIn() {
//         return loggedIn;
//     }
// 
//     public void setLoggedIn(boolean loggedIn) {
//         this.loggedIn = loggedIn;
//     }
// 
//     public Account getAccount() {
//         return account;
//     }
// 
//     public void setAccount(Account account) {
//         this.account = account;
//     }
// 
//     public Room getSelected() {
//         return selected;
//     }
// 
//     public void setSelected(Room selected) {
//         this.selected = selected;
//     }
//     
//     
// }
// 
// Path: try_java_ee7-web/src/main/java/enterprisegeeks/service/Service.java
// public interface Service{
//     
//     
//     public boolean registerAccount(Account accout);
//     
//     public Account findAccountByName(String name);
//     
//     /** ログイン用トークン発行 */
//     public String publishToken(Account account);
//     
//     /** チャットルーム一覧 */
//     public List<Room> allRooms();
//     
//     /** チャットルームのチャット一覧を取得 */
//     public List<Chat> findChatByRoom(Room room, Timestamp from);
//     
//     public void addChat(Chat chat);
//     
//     public Account getAccountByToken(String token);
//     
//     
// }
// 
// Path: try_java_ee7-web/src/main/java/enterprisegeeks/util/Gravater.java
// public class Gravater {
// 
//     private static String hex(byte[] array) {
//         StringBuilder sb = new StringBuilder();
//         for (int i = 0; i < array.length; ++i) {
//             sb.append(Integer.toHexString((array[i]
//                     & 0xFF) | 0x100).substring(1, 3));
//         }
//         return sb.toString();
//     }
// 
//     public static String md5Hex(String message) {
//         try {
//             MessageDigest md
//                     = MessageDigest.getInstance("MD5");
//             return hex(md.digest(message.getBytes("CP1252")));
//         } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {
//             return null;
//         }
//     }
//     
//     public static void main(String[] args) {
//         
//         
//         System.out.println(Gravater.md5Hex("many.front@gmail.com"));
//     }
// }
// 
// Path: try_java_ee7-web/src/main/java/enterprisegeeks/util/MessageUtil.java
// @ApplicationScoped
// public class MessageUtil {
//     
//     public void addMessage(String cliendId, String messageId) {
//          FacesContext fc = FacesContext.getCurrentInstance();
//          String message = fc.getApplication().getResourceBundle(fc, "msg")
//                  .getString(messageId);
//          fc.addMessage(cliendId, new FacesMessage(message));
//     }
//     
// }


import enterprisegeeks.entity.Account;
import enterprisegeeks.model.Auth;
import enterprisegeeks.service.Service;
import enterprisegeeks.util.Gravater;
import enterprisegeeks.util.MessageUtil;
import java.util.ResourceBundle;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpSession;
import javax.transaction.Transactional;
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package enterprisegeeks.action;


@RequestScoped
@Named
@Transactional
public class AuthAction {
    
    @Inject
// Path: try_java_ee7-web/src/main/java/enterprisegeeks/entity/Account.java
// @Vetoed //CDI対象外
// @Entity
// @NamedQueries({
//     @NamedQuery(name = "Account.nameOrEmali", query = "select a from Account a where a.name = :name or a.email = :email")
//     , @NamedQuery(name = "Account.byToken", query="select a from Account a where a.token = :token")}
// )
// @Table(uniqueConstraints = @UniqueConstraint(columnNames = {"name", "email"}))
// public class Account implements Serializable{
//     
//     @NotNull(message = "{required}")
//     @Size(message = "{required}", min = 1) // 未入力の場合、空文字になるため。
//     @Id
//     @Column(length = 40)
//     private String name;
//     
//     @Email(message = "{email.invalid}")
//     @NotNull(message = "{required}")
//     @Size(message = "{required}", min = 1)
//     @Column(length = 200, nullable = false)
//     private String email;
//     
//     @Column(length = 32, nullable = true )
//     private String gravaterHash;
//     
//     @Column(length = 40, nullable = true )
//     private String token;
//     
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getGravaterHash() {
//         return gravaterHash;
//     }
// 
//     public void setGravaterHash(String gravaterHash) {
//         this.gravaterHash = gravaterHash;
//     }
//     
//     public String getGravatar() {
//         return "https://www.gravatar.com/avatar/" + gravaterHash;
//     }
// 
//     public String getToken() {
//         return token;
//     }
// 
//     public void setToken(String token) {
//         this.token = token;
//     }
// }
// 
// Path: try_java_ee7-web/src/main/java/enterprisegeeks/model/Auth.java
// @SessionScoped
// @Named
// public class Auth implements Serializable{
//     
//     private boolean loggedIn;
//     
//     private Room selected;
//     
//     private Account account = new Account();
// 
//     public boolean isLoggedIn() {
//         return loggedIn;
//     }
// 
//     public void setLoggedIn(boolean loggedIn) {
//         this.loggedIn = loggedIn;
//     }
// 
//     public Account getAccount() {
//         return account;
//     }
// 
//     public void setAccount(Account account) {
//         this.account = account;
//     }
// 
//     public Room getSelected() {
//         return selected;
//     }
// 
//     public void setSelected(Room selected) {
//         this.selected = selected;
//     }
//     
//     
// }
// 
// Path: try_java_ee7-web/src/main/java/enterprisegeeks/service/Service.java
// public interface Service{
//     
//     
//     public boolean registerAccount(Account accout);
//     
//     public Account findAccountByName(String name);
//     
//     /** ログイン用トークン発行 */
//     public String publishToken(Account account);
//     
//     /** チャットルーム一覧 */
//     public List<Room> allRooms();
//     
//     /** チャットルームのチャット一覧を取得 */
//     public List<Chat> findChatByRoom(Room room, Timestamp from);
//     
//     public void addChat(Chat chat);
//     
//     public Account getAccountByToken(String token);
//     
//     
// }
// 
// Path: try_java_ee7-web/src/main/java/enterprisegeeks/util/Gravater.java
// public class Gravater {
// 
//     private static String hex(byte[] array) {
//         StringBuilder sb = new StringBuilder();
//         for (int i = 0; i < array.length; ++i) {
//             sb.append(Integer.toHexString((array[i]
//                     & 0xFF) | 0x100).substring(1, 3));
//         }
//         return sb.toString();
//     }
// 
//     public static String md5Hex(String message) {
//         try {
//             MessageDigest md
//                     = MessageDigest.getInstance("MD5");
//             return hex(md.digest(message.getBytes("CP1252")));
//         } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {
//             return null;
//         }
//     }
//     
//     public static void main(String[] args) {
//         
//         
//         System.out.println(Gravater.md5Hex("many.front@gmail.com"));
//     }
// }
// 
// Path: try_java_ee7-web/src/main/java/enterprisegeeks/util/MessageUtil.java
// @ApplicationScoped
// public class MessageUtil {
//     
//     public void addMessage(String cliendId, String messageId) {
//          FacesContext fc = FacesContext.getCurrentInstance();
//          String message = fc.getApplication().getResourceBundle(fc, "msg")
//                  .getString(messageId);
//          fc.addMessage(cliendId, new FacesMessage(message));
//     }
//     
// }


// Path: try_java_ee7-web/src/main/java/enterprisegeeks/action/AuthAction.java
import enterprisegeeks.entity.Account;
import enterprisegeeks.model.Auth;
import enterprisegeeks.service.Service;
import enterprisegeeks.util.Gravater;
import enterprisegeeks.util.MessageUtil;
import java.util.ResourceBundle;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpSession;
import javax.transaction.Transactional;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package enterprisegeeks.action;


@RequestScoped
@Named
@Transactional
public class AuthAction {
    
    @Inject
    private Auth auth;