Example #1
0
        public static AppUser GetCurrentAppUser(this Service srvce)
        {
            CustomUserSession UserSession = (CustomUserSession)srvce.GetSession();
            var User = srvce.Db.Single <AppUser>(A => A.Email == UserSession.Email);

            return(User);
        }
 public override object Logout(IServiceBase service, Authenticate request)
 {
     try
     {
         CustomUserSession session = service.GetSession() as CustomUserSession;
         User User = (service as AuthenticateService).Redis.Get <User>(session.UserAuthId);
         EbConnectionFactory EbConnectionFactory = service.TryResolve <IEbConnectionFactory>() as EbConnectionFactory;
         User.Logout(EbConnectionFactory.DataDB);
     }
     catch (Exception ex)
     {
         Console.WriteLine("Exception in Logout : " + ex.Message);
     }
     return(base.Logout(service, request));
 }
Example #3
0
 protected bool IsUserAuthorized(IRequest thisRequest)
 {
     try
     {
         // Within the hub itself we can get the request directly from the context.
         //Microsoft.AspNet.SignalR.IRequest myRequest = this.Context.Request; // Unfortunately this is a signalR IRequest, not a ServiceStack IRequest, but we can still use it to get the cookies.
         bool              perm       = thisRequest.Cookies["ss-opt"].Value == "perm";
         string            sessionID  = perm ? thisRequest.Cookies["ss-pid"].Value : thisRequest.Cookies["ss-id"].Value;
         var               sessionKey = SessionFeature.GetSessionKey(sessionID);
         CustomUserSession session    = HostContext.Cache.Get <CustomUserSession>(sessionKey);
         return(session.IsAuthenticated);
     }
     catch (Exception ex)
     {
         // probably not auth'd so no cookies, session etc.
     }
     return(false);
 }
            public void PopulateSession(IUserAuthRepository authRepo, IUserAuth userAuth, CustomUserSession session, string userId)
            {
                if (authRepo == null)
                {
                    return;
                }

                var holdSessionId = session.Id;

                session.PopulateWith(userAuth); //overwrites session.Id
                session.Id = holdSessionId;
                session.IsAuthenticated = true;
                session.UserAuthId      = userId;

                string temp = userId.Substring(userId.IndexOf(CharConstants.COLON) + 1);

                session.Email        = temp.Substring(0, temp.IndexOf(CharConstants.COLON));
                session.Uid          = (userAuth as User).UserId;
                session.WhichConsole = userId.Substring(userId.Length - 2);
                session.SourceIp     = (userAuth as User).SourceIp;
                session.Roles.Clear();
                session.Permissions.Clear();
            }
Example #5
0
        async Task <Expression <Func <EventoCalendario, bool> > > ConstruirFiltro(EncuestaGamEventoCalendarioConsultar modelo, IRequest peticion, CustomUserSession sesion)
        {
            IList <int> regionalIds = new List <int>();

            if (modelo.EncargadoId == sesion.GetPersonaId())
            {
                regionalIds = sesion.Regionales.ConvertAll(x => x.Id);
            }
            else
            {
                var regionales = peticion.TryResolve <IRegionalGestorConsultas>();
                regionalIds = await regionales.ConsultarRegionalIdsAsignadosAsync(modelo.EncargadoId.Value);
            }

            Expression <Func <EventoCalendario, bool> > filtro = entidad => regionalIds.Contains(entidad.RegionalId);

            return(filtro);
        }
Example #6
0
 protected void SetSession(CustomUserSession session)
 {
     _sessionProvider.Session = session;
 }
        public override bool TryAuthenticate(IServiceBase authService, string UserName, string password)
        {
            try
            {
                Logger.Info("In TryAuthenticate method1");

                var    request      = authService.Request.Dto as Authenticate;
                var    cid          = request.Meta.ContainsKey(TokenConstants.CID) ? request.Meta[TokenConstants.CID] : string.Empty;
                var    socialId     = request.Meta.ContainsKey(TokenConstants.SOCIALID) ? request.Meta[TokenConstants.SOCIALID] : string.Empty;
                var    whichContext = request.Meta[TokenConstants.WC].ToLower().Trim();
                string ip           = request.Meta.ContainsKey(TokenConstants.IP) ? request.Meta[TokenConstants.IP] : string.Empty;
                string userAgent    = request.Meta.ContainsKey("useragent") ? request.Meta["useragent"] : string.Empty;
                string deviceId     = request.Meta.ContainsKey("deviceid") ? request.Meta["deviceid"] : string.Empty;

                var EbConnectionFactory = authService.TryResolve <IEbConnectionFactory>() as EbConnectionFactory;

                Logger.Info("In TryAuthenticate method2");
                //string[] app_types = { "Mobile", "Web", "Bot" };
                //if (request.Meta["context"] == "tc" || request.Meta["context"] == "dc")
                //	app_types

                //if (request.Meta.ContainsKey("signup_tok"))
                //         {
                //             cid = CoreConstants.EXPRESSBASE;
                //             _authUser = User.GetInfraVerifiedUser(EbConnectionFactory.DataDB, UserName, request.Meta["signup_tok"]);
                //         }

                User _authUser = null;
                if (whichContext.Equals(RoutingConstants.TC))
                {
                    _authUser = User.GetDetailsTenant(EbConnectionFactory.DataDB, UserName, password, ip);
                    Logger.Info("TryAuthenticate -> Tenant");
                }
                else if (request.Meta.ContainsKey("anonymous"))                                                                      // && whichContext.Equals("bc"))
                {
                    var emailId        = request.Meta.ContainsKey("emailId") ? request.Meta["emailId"] : string.Empty;               //for anonymous
                    var phone          = request.Meta.ContainsKey("phone") ? request.Meta["phone"] : string.Empty;                   //for anonymous
                    var appid          = request.Meta.ContainsKey("appid") ? Convert.ToInt32(request.Meta["appid"]) : 0;             //for anonymous
                    var user_ip        = request.Meta.ContainsKey("user_ip") ? request.Meta["user_ip"] : string.Empty;               //for anonymous
                    var user_name      = request.Meta.ContainsKey("user_name") ? request.Meta["user_name"] : string.Empty;           //for anonymous
                    var user_browser   = request.Meta.ContainsKey("user_browser") ? request.Meta["user_browser"] : string.Empty;     //for anonymous
                    var city           = request.Meta.ContainsKey("city") ? request.Meta["city"] : string.Empty;                     //for anonymous
                    var region         = request.Meta.ContainsKey("region") ? request.Meta["region"] : string.Empty;                 //for anonymous
                    var country        = request.Meta.ContainsKey("country") ? request.Meta["country"] : string.Empty;               //for anonymous
                    var latitude       = request.Meta.ContainsKey("latitude") ? request.Meta["latitude"] : string.Empty;             //for anonymous
                    var longitude      = request.Meta.ContainsKey("longitude") ? request.Meta["longitude"] : string.Empty;           //for anonymous
                    var timezone       = request.Meta.ContainsKey("timezone") ? request.Meta["timezone"] : string.Empty;             //for anonymous
                    var iplocationjson = request.Meta.ContainsKey("iplocationjson") ? request.Meta["iplocationjson"] : string.Empty; //for anonymous

                    _authUser = User.GetDetailsAnonymous(EbConnectionFactory.DataDB, socialId, emailId, phone, appid, whichContext, user_ip, user_name, user_browser, city, region, country, latitude, longitude, timezone, iplocationjson);

                    Logger.Info("TryAuthenticate -> anonymous");
                }
                else if (!string.IsNullOrEmpty(socialId))
                {
                    _authUser = User.GetDetailsSocial(EbConnectionFactory.DataDB, socialId, whichContext, ip, deviceId, userAgent);
                    Logger.Info("TryAuthenticate -> socialId");
                }
                else if (request.Meta.ContainsKey("sso") && (whichContext.Equals("dc") || whichContext.Equals("uc")))
                {
                    _authUser = User.GetDetailsSSO(EbConnectionFactory.DataDB, UserName, whichContext, ip, deviceId, userAgent);
                    Logger.Info("TryAuthenticate -> sso");
                }
                else
                {
                    _authUser = User.GetDetailsNormal(EbConnectionFactory.DataDB, UserName, password, whichContext, ip, deviceId, userAgent);
                    Logger.Info("TryAuthenticate -> Normal");
                }
                if (_authUser != null)
                {
                    if (_authUser.UserId == -1)
                    {
                        throw new Exception("Access Denied");
                    }
                    if (_authUser.Email != null)
                    {
                        CustomUserSession session = authService.GetSession(false) as CustomUserSession;
                        var redisClient           = authService.TryResolve <IRedisClientsManager>().GetClient();
                        if (_authUser.Email.Equals(TokenConstants.ANONYM_EMAIL))
                        {
                            session.Aid      = _authUser.UserId;
                            _authUser.UserId = 1;
                        }
                        session.CId             = cid;
                        _authUser.CId           = cid;
                        session.Uid             = _authUser.UserId;
                        session.Email           = _authUser.Email;
                        session.IsAuthenticated = true;
                        session.User            = _authUser;
                        session.WhichConsole    = whichContext;
                        session.DBVendor        = EbConnectionFactory.DataDB.Vendor;
                        _authUser.wc            = whichContext;
                        _authUser.AuthId        = string.Format(TokenConstants.SUB_FORMAT, cid, _authUser.Email, whichContext);
                        session.UserAuthId      = _authUser.AuthId;
                        session.SourceIp        = _authUser.SourceIp;

                        var authRepo     = HostContext.AppHost.GetAuthRepository(authService.Request);
                        var existingUser = (authRepo as MyRedisAuthRepository).GetUserAuth(session.UserAuthId);
                        (authRepo as MyRedisAuthRepository).UpdateUserAuth(existingUser, _authUser);
                    }
                }
                return(_authUser != null);
            } catch (Exception ee)
            {
                if (ee.Message == "Access Denied")
                {
                    throw new Exception("Access Denied");
                }
                Logger.Info("Exception: " + ee.ToJson());
                throw ee;
            }
        }
Example #8
0
        public override bool TryAuthenticate(IServiceBase authService, string UserName, string password)
        {
            ILog log = LogManager.GetLogger(GetType());

            log.Info("In TryAuthenticate method1");
            var TenantDbFactory = authService.ResolveService <ITenantDbFactory>() as TenantDbFactory;


            log.Info("In TryAuthenticate method2");

            User _authUser = null;

            var request = authService.Request.Dto as Authenticate;

            var cid      = request.Meta.ContainsKey("cid") ? request.Meta["cid"] : string.Empty;
            var socialId = request.Meta.ContainsKey("socialId") ? request.Meta["socialId"] : string.Empty;

            //EbBaseService bservice = new EbBaseService();

            if (request.Meta.ContainsKey("signup_tok"))
            {
                cid       = "expressbase";
                _authUser = User.GetInfraVerifiedUser(TenantDbFactory.DataDB, UserName, request.Meta["signup_tok"]);
            }
            else
            {
                //if (cid == "expressbase")
                //{
                //    log.Info("for tenant login");
                //    _authUser = (string.IsNullOrEmpty(socialId)) ? User.GetInfraUser(TenantDbFactory.DataDB, UserName, password) : User.GetInfraUserViaSocial(TenantDbFactory.DataDB, UserName, socialId);
                //    log.Info("#Eb reached 1");
                //}
                //else
                //{
                //log.Info("for user login");
                _authUser = (string.IsNullOrEmpty(socialId)) ? User.GetDetails(TenantDbFactory.DataDB, UserName, password) : User.GetInfraUserViaSocial(TenantDbFactory.DataDB, socialId);
                log.Info("#Eb reached 2");
                //}
            }

            if (_authUser != null)
            {
                CustomUserSession session = authService.GetSession(false) as CustomUserSession;
                var redisClient           = authService.TryResolve <IRedisClientsManager>().GetClient();
                session.CId             = cid;
                _authUser.CId           = cid;
                session.Uid             = _authUser.UserId;
                session.Email           = _authUser.Email;
                session.IsAuthenticated = true;
                session.User            = _authUser;
                session.WhichConsole    = request.Meta["wc"];
                _authUser.wc            = request.Meta["wc"];
                session.UserAuthId      = string.Format("{0}-{1}-{2}", cid, _authUser.Email, request.Meta["wc"]);

                var authRepo     = HostContext.AppHost.GetAuthRepository(authService.Request);
                var existingUser = (authRepo as EbRedisAuthRepository).GetUserAuth(string.Format("{0}-{1}-{2}", cid, _authUser.Email, request.Meta["wc"]));
                //if (existingUser != null)
                (authRepo as EbRedisAuthRepository).UpdateUserAuth(existingUser, _authUser);
                //redisClient.Set<IUserAuth>(string.Format("{0}-{1}", cid, _authUser.Email), _authUser);
            }

            return(_authUser != null);
        }