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)); }
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(); }
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); }
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; } }
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); }