示例#1
0
 public static void CreateSession(M2ESession session)
 {
     var sessionId = session.SessionId;
     const int hours = 1; // TODO: currently hard coded hour value;
     //MemoryCache.Default.Set(sessionId, session, new CacheItemPolicy() { SlidingExpiration = new TimeSpan(hours, 0, 0) });
     setMemoryCacheValue(sessionId, session, hours, 0, 0);
 }
示例#2
0
 private static bool IsValidSession(string sessionId, out  M2ESession session)
 {
     session = null;
     if (MemoryCache.Default.Contains(sessionId))
     {
         session = (M2ESession)MemoryCache.Default.Get(sessionId);
     }
     return VerifySessionObject(session);
 }
示例#3
0
 private static bool IsValidSession(string sessionId, out M2ESession session)
 {
     session = null;
     if (MemoryCache.Default.Contains(sessionId))
     {
         session = (M2ESession)MemoryCache.Default.Get(sessionId);
     }
     return(VerifySessionObject(session));
 }
示例#4
0
        public static void CreateSession(M2ESession session)
        {
            var       sessionId = session.SessionId;
            const int hours     = 1; // TODO: currently hard coded hour value;

            MemoryCache.Default.Set(sessionId, session, new CacheItemPolicy()
            {
                SlidingExpiration = new TimeSpan(hours, 0, 0)
            });
        }
示例#5
0
        public static bool IsValidSession(string sessionId)
        {
            if (sessionId == null)
            {
                return(false);
            }

            M2ESession session = null;

            return(IsValidSession(sessionId, out session));
        }
示例#6
0
        public ResponseModel<LoginResponse> LockAccountService(HeaderManager headers, M2ESession session)
        {
            var response = new ResponseModel<LoginResponse>();
            if (session.UserName != null)
            {
                bool logoutStatus = new TokenManager().Logout(headers.AuthToken);
                var user = _db.Users.SingleOrDefault(x => x.Username == session.UserName);
                if (user != null)
                {                                        
                    var data = new Dictionary<string, string>();
                    data["Username"] = user.Username;
                    data["Password"] = user.Password;
                    data["userGuid"] = user.guid;

                    var encryptedData = EncryptionClass.encryptUserDetails(data);

                    response.Payload = new LoginResponse();
                    response.Payload.UTMZK = encryptedData["UTMZK"];
                    response.Payload.UTMZV = encryptedData["UTMZV"];
                    response.Payload.TimeStamp = DateTime.Now.ToString(CultureInfo.InvariantCulture);
                    response.Payload.Code = "200";
                    response.Status = 200;
                    response.Message = "Account Locked";

                    var newUserSession = new M2ESession(user.Username);
                    TokenManager.CreateSession(newUserSession);
                    response.Payload.UTMZT = newUserSession.SessionId;
                    user.Locked = Constants.status_true;

                    try
                    {
                        _db.SaveChanges();
                    }
                    catch (DbEntityValidationException e)
                    {
                        DbContextException.LogDbContextException(e);                        
                    }
                }
                else
                {
                    response.Status = 424;
                    response.Message = "user detail not available";
                }
            }
                        
            return response;
        }
示例#7
0
        public JsonResult Login(LoginRequest req)
        {
            var returnUrl = "/";
            var referral = Request.QueryString["ref"];
            var responseData = new LoginResponse();
            if (req.Type == "web")
            {
                var loginService = new LoginService();
                responseData = loginService.WebLogin(req.UserName, EncryptionClass.Md5Hash(req.Password), returnUrl, req.KeepMeSignedInCheckBox);
            }

            if (responseData.Code == "200")
            {
                var session = new M2ESession(req.UserName);
                TokenManager.CreateSession(session);
                responseData.UTMZT = session.SessionId;
            }
            var response = new ResponseModel<LoginResponse> { Status = Convert.ToInt32(responseData.Code), Message = "success", Payload = responseData };
            return Json(response);
        }
示例#8
0
        public static M2ESession getSessionInfo(string sessionId, HeaderManager headers)
        {
            M2ESession session = null;
            if (IsValidSession(sessionId, out session))
            {
                return session;
            }
            else
            {
                if (headers == null)
                    return null;
                if (sessionId == null)
                    return null;
                string Authkey = ConfigurationManager.AppSettings["AuthKey"];                

                string username = EncryptionClass.GetDecryptionValue(headers.AuthKey, Authkey);
                M2EContext _db = new M2EContext();
                var dbUserInfo = _db.Users.SingleOrDefault(x=>x.Username == username);
                if (dbUserInfo != null)
                {
                    var data = new Dictionary<string, string>();                    
                    data["Password"] = headers.AuthValue;
                    data["userGuid"] = dbUserInfo.guid;

                    try
                    {
                        var decryptedData = EncryptionClass.decryptUserDetails(data);

                        if (dbUserInfo.KeepMeSignedIn == "true" && dbUserInfo.Password == decryptedData["UTMZV"])
                        {
                            var NewSession = new M2ESession(username, sessionId);
                            TokenManager.CreateSession(NewSession);
                            return getSessionInfo(sessionId, headers);
                        }
                        else
                        {
                            return null;
                        }

                    }
                    catch (Exception)
                    {

                        return null;
                    }
                    

                }
                else
                {
                    return null;
                }                
            }
        }
示例#9
0
 public static void UpdateSignalRClientAddr(M2ESession session,dynamic signalRClientAddr)
 {
     session.SignalRClient = signalRClientAddr;
     const int hours = 1; // TODO: currently hard coded hour value;
     setMemoryCacheValue(session.SessionId, session, hours, 0, 0);
 }
示例#10
0
 private static void setMemoryCacheValue(string SessionId, M2ESession session, int hours, int minutes, int seconds)
 {
     MemoryCache.Default.Set(SessionId, session, new CacheItemPolicy() { SlidingExpiration = new TimeSpan(hours, 0, 0) });
 }
示例#11
0
 private static bool VerifySessionObject(M2ESession session)
 {
     return session != null;
 }
示例#12
0
 private static bool VerifySessionObject(M2ESession session)
 {
     return(session != null);
 }
示例#13
0
 public ResponseModel<LoginResponse> unlockAccountService(HeaderManager headers, M2ESession session,string password)
 {
     var response = new ResponseModel<LoginResponse>();
     if (session == null)
     {
         response.Status = 201;
         response.Message = "user session not available";
     }
     else if (session.UserName != null)
     {
         var user = _db.Users.SingleOrDefault(x => x.Username == session.UserName && x.Password == password);
         if (user != null)
         {
             user.Locked = Constants.status_false;
             try
             {
                 _db.SaveChanges();
                 response.Status = 200;
                 response.Message = "successfully unlocked";
             }
             catch (DbEntityValidationException e)
             {
                 DbContextException.LogDbContextException(e);
                 response.Status = 500;
                 response.Message = "Exception occured";
             }
         }
         else
         {
             response.Status = 424;
             response.Message = "user detail not available";
         }
     }
     else
     {
         response.Status = 201;
         response.Message = "user session not available";
     }
     return response;
 }
示例#14
0
        public ResponseModel<LoginResponse> CheckAndSaveFacebookUserInfoIntoDatabase(string fid, string refKey, string access_token, bool isMobileApiCall)
        {
            var response = new ResponseModel<LoginResponse>();
            var ifFacebookUserAlreadyRegistered = _db.FacebookAuths.SingleOrDefault(x => x.facebookId == fid);

            if (isMobileApiCall)
            {
                var fb = new FacebookClient(access_token);

                dynamic fqlResponse = fb.Get("fql",
                            new { q = "SELECT uid, first_name, last_name, sex, pic_big_with_logo, username FROM user WHERE uid=me()" });
                var FacebookAuthData = new FacebookAuth();                
                FacebookAuthData.username = Constants.NA;
                FacebookAuthData.AuthToken = access_token;
                FacebookAuthData.datetime = DateTime.Now.ToString();
                FacebookAuthData.facebookId = Convert.ToString(fqlResponse.data[0].uid);
                FacebookAuthData.facebookUsername = fqlResponse.data[0].username;

                //var ifAlreadyExists = _db.FacebookAuths.SingleOrDefault(x => x.facebookId == fid);
                if (ifFacebookUserAlreadyRegistered == null)
                {
                    _db.FacebookAuths.Add(FacebookAuthData);
                    ifFacebookUserAlreadyRegistered = FacebookAuthData;
                }
                else
                {
                    // refresh the token
                    ifFacebookUserAlreadyRegistered.AuthToken = access_token;
                    ifFacebookUserAlreadyRegistered.datetime = DateTime.Now.ToString();
                }
            }

            //var ifFacebookUserAlreadyRegistered = _db.FacebookAuths.SingleOrDefault(x => x.facebookId == fid);
            if (ifFacebookUserAlreadyRegistered.username != Constants.NA)
            {
                if (_db.Users.Any(x => x.Username == ifFacebookUserAlreadyRegistered.username))
                {
                    var user = _db.Users.SingleOrDefault(x => x.Username == ifFacebookUserAlreadyRegistered.username);
                    if (user != null)
                    {
                        var data = new Dictionary<string, string>();
                        data["Username"] = user.Username;
                        data["Password"] = user.Password;
                        data["userGuid"] = user.guid;

                        var encryptedData = EncryptionClass.encryptUserDetails(data);

                        response.Payload = new LoginResponse();
                        response.Payload.UTMZK = encryptedData["UTMZK"];
                        response.Payload.UTMZV = encryptedData["UTMZV"];
                        response.Payload.TimeStamp = DateTime.Now.ToString(CultureInfo.InvariantCulture);
                        response.Payload.Code = "210";
                        response.Status = 210;
                        response.Message = "user Login via facebook";
                        try
                        {
                            user.KeepMeSignedIn = "true";//keepMeSignedIn.Equals("true", StringComparison.OrdinalIgnoreCase) ? "true" : "false";
                            user.Locked = Constants.status_false;
                            _db.SaveChanges();

                            var session = new M2ESession(ifFacebookUserAlreadyRegistered.username);
                            TokenManager.CreateSession(session);
                            response.Payload.UTMZT = session.SessionId;
                            return response;

                        }
                        catch (DbEntityValidationException e)
                        {
                            DbContextException.LogDbContextException(e);
                            response.Payload.Code = "500";

                            return response;
                        }
                    }
                    else
                        response.Payload.Code = "403";
                }
            }
            else
            {
                //save user details in database ..

                var fb = new FacebookClient(ifFacebookUserAlreadyRegistered.AuthToken);
                dynamic result = fb.Get("fql",
                            new { q = "SELECT uid, first_name, last_name, sex, pic_big_with_logo, username FROM user WHERE uid=me()" });

                var guid = Guid.NewGuid().ToString();
                var user = new User
                {
                    Username = result.data[0].username + "@facebook.com",
                    Password = EncryptionClass.Md5Hash(Guid.NewGuid().ToString()),
                    Source = "facebook",
                    isActive = "true",
                    Type = "user",
                    guid = Guid.NewGuid().ToString(),
                    fixedGuid = Guid.NewGuid().ToString(),
                    FirstName = result.data[0].first_name,
                    LastName = result.data[0].last_name,
                    gender = result.data[0].sex,
                    ImageUrl = result.data[0].pic_big_with_logo
                };
                _db.Users.Add(user);

                if (!Constants.NA.Equals(refKey))
                {
                    new ReferralService().payReferralBonusAsync(refKey, user.Username, Constants.status_true);
                }

                try
                {
                    ifFacebookUserAlreadyRegistered.username = user.Username;
                    _db.SaveChanges();

                    var data = new Dictionary<string, string>();
                    data["Username"] = user.Username;
                    data["Password"] = user.Password;
                    data["userGuid"] = user.guid;

                    var encryptedData = EncryptionClass.encryptUserDetails(data);

                    response.Payload = new LoginResponse();
                    response.Payload.UTMZK = encryptedData["UTMZK"];
                    response.Payload.UTMZV = encryptedData["UTMZV"];
                    response.Payload.TimeStamp = DateTime.Now.ToString(CultureInfo.InvariantCulture);
                    response.Payload.Code = "210";
                    response.Status = 210;
                    response.Message = "user Login via facebook";
                    try
                    {
                        var session = new M2ESession(ifFacebookUserAlreadyRegistered.username);
                        TokenManager.CreateSession(session);
                        response.Payload.UTMZT = session.SessionId;
                    }
                    catch (DbEntityValidationException e)
                    {
                        DbContextException.LogDbContextException(e);
                        response.Status = 500;
                        response.Message = "Internal Server Error !!";
                    }
                    var signalRHub = new SignalRHub();
                    string totalProjects = "";
                    string successRate = "";
                    string totalUsers = _db.Users.Count().ToString(CultureInfo.InvariantCulture);
                    string projectCategories = "";

                    new UserMessageService().SendUserNotificationForAccountVerificationSuccess(
                        user.Username, user.Type
                    );

                    var hubContext = GlobalHost.ConnectionManager.GetHubContext<SignalRHub>();
                    hubContext.Clients.All.updateBeforeLoginUserProjectDetails(totalProjects, successRate, totalUsers, projectCategories);
                }
                catch (DbEntityValidationException e)
                {
                    DbContextException.LogDbContextException(e);
                    response.Status = 500;
                    response.Message = "Internal Server Error !!!";
                }

            }

            return response;
        }
示例#15
0
        public ActionResult LinkedinLogin(string type)
        {
            var response = new ResponseModel<LoginResponse>();

            String AbsoluteUri = Request.Url.AbsoluteUri;
            string oauth_token = Request.QueryString["oauth_token"];
            string oauth_verifier = Request.QueryString["oauth_verifier"];
            String refKey = Request.QueryString["refKey"];
            string authLink = string.Empty;
            if (oauth_token != null && oauth_verifier != null)
            {
                var linkedinApiDataResponse = _db.linkedinAuths.SingleOrDefault(x => x.oauth_Token == oauth_token);
                if (linkedinApiDataResponse != null)
                {
                    GetAccessToken(oauth_token, linkedinApiDataResponse.oauth_TokenSecret, oauth_verifier);
                    String UserDetailString = RequestProfile(_oauth.Token, _oauth.TokenSecret, oauth_verifier);
                    var linkedinUserDetails = JsonConvert.DeserializeObject<linkedinUserDataWrapper>(Convert.ToString(UserDetailString));
                    _db.linkedinAuths.Attach(linkedinApiDataResponse);
                    _db.linkedinAuths.Remove(linkedinApiDataResponse);
                    var ifUserAlreadyRegistered = _db.Users.SingleOrDefault(x => x.Username == linkedinUserDetails.emailAddress);
                    if (ifUserAlreadyRegistered != null)
                    {
                        
                        var data = new Dictionary<string, string>();
                        data["Username"] = ifUserAlreadyRegistered.Username;
                        data["Password"] = ifUserAlreadyRegistered.Password;
                        data["userGuid"] = ifUserAlreadyRegistered.guid;

                        var encryptedData = EncryptionClass.encryptUserDetails(data);                        

                        response.Payload = new LoginResponse();
                        response.Payload.UTMZK = encryptedData["UTMZK"];
                        response.Payload.UTMZV = encryptedData["UTMZV"];
                        response.Payload.TimeStamp = DateTime.Now.ToString(CultureInfo.InvariantCulture);
                        response.Payload.Code = "210";
                        response.Status = 210;
                        response.Message = "user Login via facebook";
                        try
                        {
                            ifUserAlreadyRegistered.KeepMeSignedIn = "true";//keepMeSignedIn.Equals("true", StringComparison.OrdinalIgnoreCase) ? "true" : "false";
                            ifUserAlreadyRegistered.Locked = Constants.status_false;
                            _db.SaveChanges();

                            var session = new M2ESession(ifUserAlreadyRegistered.Username);
                            TokenManager.CreateSession(session);
                            response.Payload.UTMZT = session.SessionId;
                            ViewBag.umtzt = response.Payload.UTMZT;
                            ViewBag.umtzk = response.Payload.UTMZK;
                            ViewBag.umtzv = response.Payload.UTMZV;
                            return View();

                        }
                        catch (DbEntityValidationException e)
                        {
                            DbContextException.LogDbContextException(e);
                            response.Payload.Code = "500";

                            return Json(response, JsonRequestBehavior.AllowGet);
                        }
                    }
                    else
                    {
                        //add user to database.

                        var guid = Guid.NewGuid().ToString();
                        
                        if (linkedinUserDetails.pictureUrl == null || linkedinUserDetails.pictureUrl == "") linkedinUserDetails.pictureUrl = Constants.NA; // if picture is not available.
                        
                        var user = new User
                        {
                            Username = linkedinUserDetails.emailAddress,
                            Password = EncryptionClass.Md5Hash(Guid.NewGuid().ToString()),
                            Source = "linkedin",
                            isActive = "true",
                            Type = "user",
                            guid = Guid.NewGuid().ToString(),
                            fixedGuid = Guid.NewGuid().ToString(),
                            FirstName = linkedinUserDetails.firstName,
                            LastName = linkedinUserDetails.lastName,
                            gender = Constants.NA,
                            ImageUrl = linkedinUserDetails.pictureUrl
                        };
                        _db.Users.Add(user);

                        try
                        {                            
                            _db.SaveChanges();
                            
                            var data = new Dictionary<string, string>();
                            data["Username"] = user.Username;
                            data["Password"] = user.Password;
                            data["userGuid"] = user.guid;

                            var encryptedData = EncryptionClass.encryptUserDetails(data);                            

                            response.Payload = new LoginResponse();
                            response.Payload.UTMZK = encryptedData["UTMZK"];
                            response.Payload.UTMZV = encryptedData["UTMZV"];
                            response.Payload.TimeStamp = DateTime.Now.ToString(CultureInfo.InvariantCulture);
                            response.Payload.Code = "210";
                            response.Status = 210;
                            response.Message = "user Login via linkedin";
                            try
                            {
                                var session = new M2ESession(user.Username);
                                TokenManager.CreateSession(session);
                                response.Payload.UTMZT = session.SessionId;

                                ViewBag.umtzt = response.Payload.UTMZT;
                                ViewBag.umtzk = response.Payload.UTMZK;
                                ViewBag.umtzv = response.Payload.UTMZV;
                                ViewBag.isNewUser = "******";

                                var signalRHub = new SignalRHub();
                                string totalProjects = "";
                                string successRate = "";
                                string totalUsers = _db.Users.Count().ToString(CultureInfo.InvariantCulture);
                                string projectCategories = "";

                                new UserMessageService().SendUserNotificationForAccountVerificationSuccess(
                                    user.Username, user.Type
                                );

                                var hubContext = GlobalHost.ConnectionManager.GetHubContext<SignalRHub>();
                                hubContext.Clients.All.updateBeforeLoginUserProjectDetails(totalProjects, successRate, totalUsers, projectCategories);

                                return View();
                            }
                            catch (DbEntityValidationException e)
                            {
                                DbContextException.LogDbContextException(e);
                                response.Status = 500;
                                response.Message = "Internal Server Error !!";
                            }
                            
                        }
                        catch (DbEntityValidationException e)
                        {
                            DbContextException.LogDbContextException(e);
                            response.Status = 500;
                            response.Message = "Internal Server Error !!!";
                        }
                    }
                }
            }
            else
            {
                authLink = CreateAuthorization();
                var linkedInApiData = new linkedinAuth
                {
                    oauth_Token = _oauth.Token,
                    oauth_TokenSecret = _oauth.TokenSecret,
                    oauth_verifier = ""
                };
                _db.linkedinAuths.Add(linkedInApiData);
                try
                {
                    _db.SaveChanges();
                    Response.Redirect(authLink);
                }
                catch (DbEntityValidationException e)
                {
                    DbContextException.LogDbContextException(e);
                    response.Status = 500;
                    response.Message = "Internal Server Error !!!";
                }                
                                
            }
            ViewBag.code = response.Status;            
            return View();
        }
示例#16
0
        public ActionResult GoogleLogin(string type)
        {
            var response = new ResponseModel<LoginResponse>();
            String code = Request.QueryString["code"];
            String refKey = Request.QueryString["refKey"];
            string app_id = "";
            string app_secret = "";
            
            if (Request.Url.Authority.Contains("localhost"))
            {
                app_id = ConfigurationManager.AppSettings["googleAppID"].ToString();
                app_secret = ConfigurationManager.AppSettings["googleAppSecret"].ToString();
            }
            else
            {
                app_id = ConfigurationManager.AppSettings["googleAppIDCautom"].ToString();
                app_secret = ConfigurationManager.AppSettings["googleAppSecretCautom"].ToString();
            }

            string scope = "email%20profile";
            string returnUrl = "http://" + Request.Url.Authority + "/SocialAuth/GoogleLogin";
            if (code == null)
            {
                var ReturnUrl = (string.Format(
                    "https://accounts.google.com/o/oauth2/auth?scope={0}&state=%2Fprofile&redirect_uri={1}&response_type=code&client_id={2}&approval_prompt=force",
                    scope, returnUrl, app_id));                
                Response.Redirect(ReturnUrl);
            }
            else
            {
                string access_token = getGoogleAuthToken(returnUrl, scope, code, app_id, app_secret);
                String URI = "https://www.googleapis.com/oauth2/v1/userinfo?access_token=" + access_token;                
                WebClient webClient = new WebClient();
                Stream stream = webClient.OpenRead(URI);
                string googleUserDetailString;

                /*I have not used any JSON parser because I do not want to use any extra dll/3rd party dll*/
                using (StreamReader br = new StreamReader(stream))
                {
                    googleUserDetailString = br.ReadToEnd();
                }
                var googleUserDetails = JsonConvert.DeserializeObject<googleUserDetails>(Convert.ToString(googleUserDetailString));
                var ifUserAlreadyRegistered = _db.Users.SingleOrDefault(x => x.Username == googleUserDetails.email);
                if (ifUserAlreadyRegistered != null)
                {                   
                    var data = new Dictionary<string, string>();
                    data["Username"] = ifUserAlreadyRegistered.Username;
                    data["Password"] = ifUserAlreadyRegistered.Password;
                    data["userGuid"] = ifUserAlreadyRegistered.guid;

                    var encryptedData = EncryptionClass.encryptUserDetails(data);                    

                    response.Payload = new LoginResponse();
                    response.Payload.UTMZK = encryptedData["UTMZK"];
                    response.Payload.UTMZV = encryptedData["UTMZV"];
                    response.Payload.TimeStamp = DateTime.Now.ToString(CultureInfo.InvariantCulture);
                    response.Payload.Code = "210";
                    response.Status = 210;
                    response.Message = "user Login via google";
                    try
                    {
                        ifUserAlreadyRegistered.KeepMeSignedIn = "true";//keepMeSignedIn.Equals("true", StringComparison.OrdinalIgnoreCase) ? "true" : "false";
                        ifUserAlreadyRegistered.Locked = Constants.status_false;
                        _db.SaveChanges();

                        var session = new M2ESession(ifUserAlreadyRegistered.Username);
                        TokenManager.CreateSession(session);
                        response.Payload.UTMZT = session.SessionId;
                        ViewBag.umtzt = response.Payload.UTMZT;
                        ViewBag.umtzk = response.Payload.UTMZK;
                        ViewBag.umtzv = response.Payload.UTMZV;
                        ViewBag.isNewUser = "******";
                        return View();

                    }
                    catch (DbEntityValidationException e)
                    {
                        DbContextException.LogDbContextException(e);
                        response.Payload.Code = "500";

                        return Json(response, JsonRequestBehavior.AllowGet);
                    }
                }
                else
                {
                    //add user to database.

                    var guid = Guid.NewGuid().ToString();

                    if (googleUserDetails.picture == null || googleUserDetails.picture == "") googleUserDetails.picture = Constants.NA; // if picture is not available.
                    if (googleUserDetails.gender == null || googleUserDetails.gender == "") googleUserDetails.gender = Constants.NA; // if picture is not available.

                    var user = new User
                    {
                        Username = googleUserDetails.email,
                        Password = EncryptionClass.Md5Hash(Guid.NewGuid().ToString()),
                        Source = "google",
                        isActive = "true",
                        Type = "user",
                        guid = Guid.NewGuid().ToString(),
                        fixedGuid = Guid.NewGuid().ToString(),
                        FirstName = googleUserDetails.given_name,
                        LastName = googleUserDetails.family_name,
                        gender = googleUserDetails.gender,
                        ImageUrl = googleUserDetails.picture
                    };
                    _db.Users.Add(user);

                    try
                    {
                        _db.SaveChanges();                        

                        var data = new Dictionary<string, string>();
                        data["Username"] = user.Username;
                        data["Password"] = user.Password;
                        data["userGuid"] = user.guid;

                        var encryptedData = EncryptionClass.encryptUserDetails(data);                       

                        response.Payload = new LoginResponse();
                        response.Payload.UTMZK = encryptedData["UTMZK"];
                        response.Payload.UTMZV = encryptedData["UTMZV"];
                        response.Payload.TimeStamp = DateTime.Now.ToString(CultureInfo.InvariantCulture);
                        response.Payload.Code = "210";
                        response.Status = 210;
                        response.Message = "user Login via google";
                        try
                        {
                            var session = new M2ESession(user.Username);
                            TokenManager.CreateSession(session);
                            response.Payload.UTMZT = session.SessionId;

                            ViewBag.umtzt = response.Payload.UTMZT;
                            ViewBag.umtzk = response.Payload.UTMZK;
                            ViewBag.umtzv = response.Payload.UTMZV;
                            ViewBag.isNewUser = "******";

                            var signalRHub = new SignalRHub();
                            string totalProjects = "";
                            string successRate = "";
                            string totalUsers = _db.Users.Count().ToString(CultureInfo.InvariantCulture);
                            string projectCategories = "";

                            new UserMessageService().SendUserNotificationForAccountVerificationSuccess(
                                user.Username, user.Type
                            );

                            var hubContext = GlobalHost.ConnectionManager.GetHubContext<SignalRHub>();
                            hubContext.Clients.All.updateBeforeLoginUserProjectDetails(totalProjects, successRate, totalUsers, projectCategories);

                            return View();
                        }
                        catch (DbEntityValidationException e)
                        {
                            DbContextException.LogDbContextException(e);
                            response.Status = 500;
                            response.Message = "Internal Server Error !!";
                        }
                        
                    }
                    catch (DbEntityValidationException e)
                    {
                        DbContextException.LogDbContextException(e);
                        response.Status = 500;
                        response.Message = "Internal Server Error !!!";
                    }
                }
            }
            return Json(response,JsonRequestBehavior.AllowGet);
        }