Subversion Repositories SmartDukaan

Rev

Rev 458 | Blame | Last modification | View Log | RSS feed

package in.shop2020.serving.controllers;

import java.util.Date;

import javax.servlet.http.Cookie;

import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.apache.struts2.rest.DefaultHttpHeaders;
import org.apache.struts2.rest.HttpHeaders;
import org.apache.thrift.TException;

import in.shop2020.model.v1.user.AuthenticationException;
import in.shop2020.model.v1.user.UserContextException;
import in.shop2020.model.v1.user.UserContextService.Client;
import in.shop2020.serving.utils.Utils;
import in.shop2020.thrift.clients.UserContextServiceClient;

import com.opensymphony.xwork2.ModelDriven;

@Results({
    @Result(name="success", type="redirectAction", params = {"actionName" , 
                "entity/1000111"})
})
public class AuthController extends BaseController implements ModelDriven<Object>{

        private Auth auth = new Auth();
        
        private UserContextServiceClient client = null;
        
        private int errorCode = 0;
        private String errorMessage;
        
        private String id;
        
        
        public AuthController(){
                try {
                        client = new UserContextServiceClient();
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
        
        @Override
        public Object getModel() {
                return this.auth;
        }
        
        public HttpHeaders show(){
                Client c = client.getClient();
                
                /*
                if(this.getId().equals("logout")){
                        if(this.session.getAttribute("userid") != null 
                                        && this.session.getAttribute("loggedin") != null
                                        && this.session.getAttribute("loggedin").toString().equals("true")){
                                
                                long userId = Long.parseLong(this.session.getAttribute("userid").toString());
                                try {
                                        c.setUserAsLoggedOut(userId, (new Date()).getTime());
                                } catch (UserContextException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                } catch (TException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                                
                                this.session.removeAttribute("userid");
                                this.session.removeAttribute("loggedin");
                                this.session.removeAttribute("issessionid");
                                this.session.removeAttribute("email");
                                return new DefaultHttpHeaders("lsuccess");
                        }else{
                                return new DefaultHttpHeaders("lfail");
                        }
                }*/
                
                if(this.getId().equals("logout")){
                        if(userinfo.isLoggedIn()){
                                long userId = userinfo.getUserId();
                                
                                try {
                                        c.setUserAsLoggedOut(userId, (new Date()).getTime());
                                        this.session.removeAttribute("userinfo");
                                } catch (UserContextException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                } catch (TException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                                
                                return new DefaultHttpHeaders("lsuccess");
                        }else{
                                return new DefaultHttpHeaders("lfail");
                        }
                }
                        
                        
                return new DefaultHttpHeaders("lfail");

        }
        
        public HttpHeaders create(){
                System.out.println(auth);
                //return new DefaultHttpHeaders("lsuccess");
                //AUTH service to be invoked from here
                
                Client c = client.getClient();
                try {
                        
                        if (c.authenticateUser(auth.getUserName(), auth.getPassword(), true)){
                                long userId = c.getContext(auth.getUserName(), auth.getPassword()).getId();
                                c.setUserAsLoggedIn(userId, (new Date()).getTime());
                                
//                              userinfo = (UserSessionInfo) this.session.getAttribute("userinfo");

                                userinfo.setUserId(userId);
                                userinfo.setLoggedIn(true);
                                userinfo.setEmail(auth.getUserName());
                                userinfo.setNameOfUser(Utils.getNameOfUser(userId));
//                              if(userinfo.getCartId() == -1){
//                                      userinfo.setCartId(Utils.getCartId(userId));
//                              }
                                this.session.setAttribute("userinfo", userinfo);

                                Cookie cookie1 = new Cookie("userid", userId+"");
                        this.response.addCookie(cookie1);
                                return new DefaultHttpHeaders("lsuccess");
                        }
                } catch (AuthenticationException e) {
                        
                        errorCode = e.getErrorCode();
                        errorMessage = e.getMessage();
                        
                } catch (TException e) {
                        // TODO Auto-generated catch block
                        errorCode = -1;
                        e.printStackTrace();
                } catch (UserContextException e) {
                        // TODO Auto-generated catch block
                        errorCode = -1;
                        e.printStackTrace();
                }
                return new DefaultHttpHeaders("lfail");
                
        }

        public int getErrorCode() {
                return errorCode;
        }

        public String getErrorMessage() {
                return errorMessage;
        }
        
        public String getId(){
                return id;
        }
        
        public void setId(String id){
                this.id = id;
        }

        public Auth getAuth() {
                return auth;
        }

        public void setAuth(Auth auth) {
                this.auth = auth;
        }
        
        public String getUserName(){
                return userinfo.getNameOfUser();
        }
}