public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary <string, string> authInfo) { session.ReferrerUrl = "/TripThru.TripThruGateway/"; session.IsAuthenticated = true; authService.SaveSession(session, new TimeSpan(7, 0, 0, 0)); }
public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo) { session.ReferrerUrl = "/TripThru.TripThruGateway/"; session.IsAuthenticated = true; authService.SaveSession(session, new TimeSpan(7, 0, 0, 0)); }
protected override void LoadUserAuthInfo(AuthUserSession userSession, IOAuthTokens tokens, Dictionary <string, string> authInfo) { if (authInfo.ContainsKey("user_id")) { tokens.UserId = authInfo.GetValueOrDefault("user_id"); } if (authInfo.ContainsKey("screen_name")) { tokens.UserName = authInfo.GetValueOrDefault("screen_name"); } try { if (tokens.UserId != null) { var json = AuthHttpGateway.DownloadTwitterUserInfo(tokens.UserId); var obj = JsonObject.Parse(json); tokens.DisplayName = obj.Get("name"); } LoadUserOAuthProvider(userSession, tokens); } catch (Exception ex) { Log.Error("Could not retrieve twitter user info for '{0}'".Fmt(userSession.TwitterUserId), ex); } }
public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary <string, string> authInfo) { session.ReferrerUrl = "".MapHostAbsolutePath(); session.IsAuthenticated = true; authService.SaveSession(session, new TimeSpan(7, 0, 0, 0)); }
public void LoadUserAuth(IAuthSession session, IOAuthTokens tokens) { session.ThrowIfNull("session"); var userAuth = GetUserAuth(session, tokens); LoadUserAuth(session, userAuth); }
public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo) { session.UserName = session.UserAuthName; //Important: You need to save the session! authService.SaveSession(session, SessionExpiry); }
public UserAuth GetUserAuth(IAuthSession authSession, IOAuthTokens tokens) { if (!authSession.UserAuthId.IsNullOrEmpty()) { var userAuth = GetUserAuth(authSession.UserAuthId); if (userAuth != null) return userAuth; } if (!authSession.UserAuthName.IsNullOrEmpty()) { var userAuth = GetUserAuthByUserName(authSession.UserAuthName); if (userAuth != null) return userAuth; } if (tokens == null || tokens.Provider.IsNullOrEmpty() || tokens.UserId.IsNullOrEmpty()) return null; var oAuthProvider = Session.QueryOver<UserOAuthProviderPersistenceDto>() .Where(x => x.Provider == tokens.Provider) .And(x => x.UserId == tokens.UserId) .SingleOrDefault(); if (oAuthProvider != null) { return Session.QueryOver<UserAuthPersistenceDto>() .Where(x => x.Id == oAuthProvider.UserAuthId) .SingleOrDefault(); } return null; }
public ModelCollection <Tweet> List(IOAuthTokens tokens, string username, int max = 1) { return(new ModelCollection <Tweet>(Create(tokens).Tweets(username, max).Select(x => new Tweet { Status = x.Html }))); }
public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo) { session.ReferrerUrl = "".MapHostAbsolutePath(); session.IsAuthenticated = true; authService.SaveSession(session, new TimeSpan(7, 0, 0, 0)); }
public string CreateOrMergeAuthSession(IAuthSession authSession, IOAuthTokens tokens) { var userAuth = GetUserAuth(authSession, tokens) ?? new UserAuth(); return dbFactory.Exec(dbCmd => { var oAuthProvider = dbCmd.FirstOrDefault<UserOAuthProvider>( "Provider = {0} AND UserId = {1}", tokens.Provider, tokens.UserId); if (oAuthProvider == null) { oAuthProvider = new UserOAuthProvider { Provider = tokens.Provider, UserId = tokens.UserId, }; } oAuthProvider.PopulateMissing(tokens); userAuth.PopulateMissing(oAuthProvider); dbCmd.Save(userAuth); oAuthProvider.UserAuthId = userAuth.Id != default(int) ? userAuth.Id : (int) dbCmd.GetLastInsertId(); dbCmd.Save(oAuthProvider); return oAuthProvider.UserAuthId.ToString(); }); }
/// <summary> /// Saves the Auth Tokens for this request. Called in OnAuthenticated(). /// Overrideable, the default behaviour is to call IUserAuthRepository.CreateOrMergeAuthSession(). /// </summary> protected virtual void SaveUserAuth(IServiceBase authService, IAuthSession session, IUserAuthRepository authRepo, IOAuthTokens tokens) { if (authRepo == null) return; if (tokens != null) { session.UserAuthId = authRepo.CreateOrMergeAuthSession(session, tokens); } authRepo.LoadUserAuth(session, tokens); foreach (var oAuthToken in session.ProviderOAuthAccess) { var authProvider = AuthService.GetAuthProvider(oAuthToken.Provider); if (authProvider == null) continue; var userAuthProvider = authProvider as OAuthProvider; if (userAuthProvider != null) { userAuthProvider.LoadUserOAuthProvider(session, oAuthToken); } } authRepo.SaveUserAuth(session); var httpRes = authService.RequestContext.Get<IHttpResponse>(); if (httpRes != null) { httpRes.Cookies.AddPermanentCookie(HttpHeaders.XUserAuthId, session.UserAuthId); } OnSaveUserAuth(authService, session); }
public string CreateOrMergeAuthSession(IAuthSession authSession, IOAuthTokens tokens) { var userAuth = GetUserAuth(authSession, tokens) ?? new UserAuth(); return(dbFactory.Exec(dbCmd => { var oAuthProvider = dbCmd.FirstOrDefault <UserOAuthProvider>( "Provider = {0} AND UserId = {1}", tokens.Provider, tokens.UserId); if (oAuthProvider == null) { oAuthProvider = new UserOAuthProvider { Provider = tokens.Provider, UserId = tokens.UserId, }; } oAuthProvider.PopulateMissing(tokens); userAuth.PopulateMissing(oAuthProvider); dbCmd.Save(userAuth); oAuthProvider.UserAuthId = userAuth.Id != default(int) ? userAuth.Id : (int)dbCmd.GetLastInsertId(); dbCmd.Save(oAuthProvider); return oAuthProvider.UserAuthId.ToString(); })); }
/// <summary>Loads user authentication information.</summary> /// /// <param name="userSession">The user session.</param> /// <param name="tokens"> The tokens.</param> /// <param name="authInfo"> Information describing the authentication.</param> protected override void LoadUserAuthInfo(AuthUserSession userSession, IOAuthTokens tokens, Dictionary<string, string> authInfo) { if (authInfo.ContainsKey("user_id")) tokens.UserId = authInfo.GetValueOrDefault("user_id"); if (authInfo.ContainsKey("screen_name")) tokens.UserName = authInfo.GetValueOrDefault("screen_name"); try { if (tokens.UserId != null) { var json = AuthHttpGateway.DownloadTwitterUserInfo(tokens.UserId); var objs = JsonObject.ParseArray(json); if (objs.Count > 0) { var obj = objs[0]; tokens.DisplayName = obj.Get("name"); } } LoadUserOAuthProvider(userSession, tokens); } catch (Exception ex) { Log.Error("Could not retrieve twitter user info for '{0}'".Fmt(userSession.TwitterUserId), ex); } }
public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, System.Collections.Generic.Dictionary<string, string> authInfo) { base.OnAuthenticated(authService, session, tokens, authInfo); if (session.Email == AuthTestsBase.AdminEmail) session.Roles.Add(RoleNames.Admin); }
public string CreateOrMergeAuthSession(IAuthSession authSession, IOAuthTokens tokens) { using (var redis = factory.GetClient()) { UserOAuthProvider oAuthProvider = null; var oAuthProviderId = GetAuthProviderByUserId(redis, tokens.Provider, tokens.UserId); if (!oAuthProviderId.IsNullOrEmpty()) oAuthProvider = redis.As<UserOAuthProvider>().GetById(oAuthProviderId); var userAuth = GetUserAuth(redis, authSession, tokens) ?? new UserAuth { Id = redis.As<UserAuth>().GetNextSequence(), }; if (oAuthProvider == null) { oAuthProvider = new UserOAuthProvider { Id = redis.As<UserOAuthProvider>().GetNextSequence(), UserAuthId = userAuth.Id, Provider = tokens.Provider, UserId = tokens.UserId, }; var idx = IndexProviderToUserIdHash(tokens.Provider); redis.SetEntryInHash(idx, tokens.UserId, oAuthProvider.Id.ToString()); } oAuthProvider.PopulateMissing(tokens); userAuth.PopulateMissing(oAuthProvider); redis.Store(userAuth); redis.Store(oAuthProvider); redis.AddItemToSet(IndexUserAuthAndProviderIdsSet(userAuth.Id), oAuthProvider.Id.ToString()); return userAuth.Id.ToString(); } }
private void SaveUserAuth(IUserAuthRepository provider, IOAuthTokens tokens) { if (provider == null) { return; } this.UserAuthId = provider.CreateOrMergeAuthSession(this, tokens); }
protected override void LoadUserAuthInfo(AuthUserSession userSession, IOAuthTokens tokens, Dictionary<string, string> authInfo) { var user = Repository.RepoUsers.GetUserByUserNameOrEmail(userSession.UserAuthName, userSession.UserAuthName); userSession.Email = user.Email; userSession.UserName = user.UserName; base.LoadUserAuthInfo(userSession, tokens, authInfo); }
/// <summary>Loads user authentication.</summary> /// /// <param name="session">The session.</param> /// <param name="tokens"> The tokens.</param> public void LoadUserAuth(IAuthSession session, IOAuthTokens tokens) { session.ThrowIfNull("session"); var userAuth = GetUserAuth(session, tokens); LoadUserAuth(session, userAuth); }
public override bool IsAuthorized(IAuthSession session, IOAuthTokens tokens, Auth request = null) { if (request != null) { if (!LoginMatchesSession(session, request.UserName)) return false; } return tokens != null && !string.IsNullOrEmpty(tokens.AccessTokenSecret); }
public override void OnAuthenticated( IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo) { base.OnAuthenticated(authService, session, tokens, authInfo); //Populate all matching fields from this session to your own custom User table var user = session.TranslateTo<User>(); user.Id = int.Parse(session.UserAuthId); //user.GravatarImageUrl64 = !session.Email.IsNullOrEmpty() ? CreateGravatarUrl(session.Email, 64) : null; foreach (var authToken in session.ProviderOAuthAccess) { // //if (authToken.Provider == FacebookAuthProvider.Name) // //{ // // user.FacebookName = authToken.DisplayName; // // user.FacebookFirstName = authToken.FirstName; // // user.FacebookLastName = authToken.LastName; // // user.FacebookEmail = authToken.Email; // //} // //else if (authToken.Provider == GoogleOpenIdOAuthProvider.Name) { user.GoogleUserId = authToken.UserId; user.GoogleFullName = authToken.FullName; user.GoogleEmail = authToken.Email; if (user.Email == null) user.Email = user.GoogleEmail; if (user.UserName == null) user.UserName = user.GoogleUserId; } else if (authToken.Provider == YahooOpenIdOAuthProvider.Name) { user.YahooUserId = authToken.UserId; user.YahooFullName = authToken.FullName; user.YahooEmail = authToken.Email; } } var adminUserNames = AppHost.AppConfig.AdminUserNames; if (AppHost.AppConfig.AdminUserNames.Contains(session.UserAuthName) && !session.HasRole(RoleNames.Admin)) { using (var assignRoles = authService.ResolveService<AssignRolesService>()) { assignRoles.Post(new AssignRoles { UserName = session.UserAuthName, Roles = { RoleNames.Admin } }); //authService.TryResolve<IDbConnectionFactory>().Run(db => db.Save(user)); } } //Resolve the DbFactory from the IOC and persist the user info }
public override bool IsAuthorized(IAuthSession session, IOAuthTokens tokens, Auth request = null) { if (BlackListRepository.Blacklist.Contains(session.Id)) return false; bool isAuthorized = base.IsAuthorized(session, tokens, request); return isAuthorized; }
/// <summary>Loads user o authentication provider.</summary> /// /// <param name="authSession">The user session.</param> /// <param name="tokens"> The tokens.</param> public override void LoadUserOAuthProvider(IAuthSession authSession, IOAuthTokens tokens) { var userSession = authSession as AuthUserSession; if (userSession == null) return; userSession.TwitterUserId = tokens.UserId ?? userSession.TwitterUserId; userSession.TwitterScreenName = tokens.UserName ?? userSession.TwitterScreenName; userSession.DisplayName = tokens.DisplayName ?? userSession.DisplayName; }
public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo) { //Fill the IAuthSession with data which you want to retrieve in the app eg: //session.FirstName = "some_firstname_from_db"; //... //Important: You need to save the session! authService.SaveSession(session, SessionExpiry); }
public override void LoadUserOAuthProvider(IAuthSession authSession, IOAuthTokens tokens) { var userSession = authSession as AuthUserSession; if (userSession == null) { return; } }
public override void LoadUserOAuthProvider(IAuthSession authSession, IOAuthTokens tokens) { var userSession = authSession as AuthUserSession; if (userSession == null) return; userSession.DisplayName = tokens.DisplayName ?? userSession.DisplayName; userSession.FirstName = tokens.FirstName ?? userSession.FirstName; userSession.LastName = tokens.LastName ?? userSession.LastName; userSession.PrimaryEmail = tokens.Email ?? userSession.PrimaryEmail ?? userSession.Email; }
public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo) { //Fill IAuthSession with data you want to retrieve in the app eg: //Load the Session Object session.FirstName = "some_firstname_from_db"; session.LastName = "some_last_name_from_db"; authService.SaveSession(session, SessionExpiry); }
public override bool IsAuthorized(IAuthSession session, IOAuthTokens tokens, Auth request = null) { return(false); //if (request != null) //{ // if (!LoginMatchesSession(session, request.UserName)) return false; //} //return !session.UserAuthName.IsNullOrEmpty(); }
public string CreateOrMergeAuthSession(IAuthSession authSession, IOAuthTokens tokens) { using (var uow = GetUnitOfWork()) { var userAuth = GetUserAuth(authSession, tokens) ?? new UserAuth(); var oAuthProvider = uow.GetSession().QueryOver<UserOAuthProviderPersistenceDto>() .Where(x => x.Provider == tokens.Provider) .And(x => x.UserId == tokens.UserId) .SingleOrDefault(); if (oAuthProvider == null) { oAuthProvider = new UserOAuthProviderPersistenceDto { Provider = tokens.Provider, UserId = tokens.UserId, }; } oAuthProvider.PopulateMissing(tokens); userAuth.PopulateMissing(oAuthProvider); userAuth.Email = oAuthProvider.Email; userAuth.ModifiedDate = DateTime.UtcNow; if (userAuth.CreatedDate == default(DateTime)) userAuth.CreatedDate = userAuth.ModifiedDate; var userAuthId = 0; if (userAuth.Id == 0) { var camper = new Camper() {Email = userAuth.PrimaryEmail}; uow.Save(camper); var userAuthDto = new UserAuthPersistenceDto(userAuth); uow.Save(userAuthDto); userAuthId = userAuthDto.Id; } else { userAuthId = userAuth.Id; } //oAuthProvider.UserAuthId = userAuth.Id; oAuthProvider.UserAuthId = (int) userAuthId; if (oAuthProvider.CreatedDate == default(DateTime)) oAuthProvider.CreatedDate = userAuth.ModifiedDate; oAuthProvider.ModifiedDate = userAuth.ModifiedDate; uow.Save(oAuthProvider); uow.CommitTransaction(); return oAuthProvider.UserAuthId.ToString(CultureInfo.InvariantCulture); } }
public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo) { session.ReferrerUrl = referrerUrl; session.IsAuthenticated = true; var user = StorageManager.GetPartnerAccountByUsername(session.UserAuthName); session.UserName = user.UserName; session.Id = user.ClientId; session.Roles = new List<string>() {user.Role.ToString()}; authService.SaveSession(session, new TimeSpan(7, 0, 0, 0)); }
private void SaveOrUpdateRegistration(UserLoginType loginType, IServiceBase resolver, IOAuthTokens authToken, Dictionary<string, string> authInfo) { ViewContext context = resolver.ResolveService<ViewContext>(); CommandBus commandBus = resolver.ResolveService<CommandBus>(); IEntityIdGenerator entityIdGenerator = resolver.ResolveService<IEntityIdGenerator>(); Logger.Debug("Login type: {0}", loginType); UserDocument existingUser = context.Users .AsQueryable() .FirstOrDefault(user => user.ThirdPartyId == authToken.UserId && user.LoginType == loginType); if (existingUser != null) { UpdateUserRegistration command = new UpdateUserRegistration() { AggregateId = existingUser.Id, FirstName = authInfo["first_name"], LastName = authInfo["last_name"], AccessToken = authToken.AccessToken, PhotoSmallUri = authInfo["photo"], PhotoBigUri = authInfo["photo_big"], }; Logger.Info("Existing user: {0}", command.Dump()); UserId = existingUser.Id; commandBus.Send(command, UserId); } else { RegisterUser command = new RegisterUser { AggregateId = entityIdGenerator.Generate(), FirstName = authInfo["first_name"], LastName = authInfo["last_name"], LoginType = loginType, ThirdPartyId = authToken.UserId, AccessToken = authToken.AccessToken, PhotoSmallUri = authInfo["photo"], PhotoBigUri = authInfo["photo_big"] }; Logger.Info("New user: {0}", command.Dump()); UserId = command.AggregateId; commandBus.Send(command, UserId); } ICacheClient cacheClient = resolver.ResolveService<ICacheClient>(); UpdateSession(cacheClient); }
public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo) { // Note: // `session.UserAuthName` is already set to the user's user name. // we use `session.UserName` for the user's secret unique id. var usersRepo = authService.TryResolve<IUsersRepository>(); var user = usersRepo.GetOrCreateUser(session.UserAuthName); session.UserName = user.UserId; authService.SaveSession(session); }
public override bool IsAuthorized(IAuthSession session, IOAuthTokens tokens, Auth request = null) { if (request != null) { if (!LoginMatchesSession(session, request.UserName)) { return(false); } } return(tokens != null && !string.IsNullOrEmpty(tokens.UserId)); }
public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo) { //Fill the IAuthSession with data which you want to retrieve in the app eg: session.FirstName = "garrett"; session.Roles = new List<string>(); session.Roles.Add("users"); session.Roles.Add("admins"); //... //Important: You need to save the session! authService.SaveSession(session, SessionExpiry); }
public static void LoadUserAuth(this IRepository repository, AuthUserSession userSession, IOAuthTokens tokens) { userSession.DisplayName = tokens.DisplayName; userSession.FullName = tokens.FullName; userSession.Email = tokens.Email; userSession.UserName = tokens.Email; var user = repository.RepoUsers.GetUserByEmail(tokens.Email); if (user == null || !user.HasOpenId(tokens.UserId)) return; userSession.Roles = user.Roles.FromJsonString<List<string>>(); }
public override bool IsAuthorized(IAuthSession session, IOAuthTokens tokens, Auth request = null) { if (request != null) { if (!LoginMatchesSession(session, request.UserName)) { return(false); } } // For OpenId, AccessTokenSecret is null/empty, but UserId is populated w/ authenticated url from openId providers return(tokens != null && !string.IsNullOrEmpty(tokens.UserId)); }
public override void LoadUserOAuthProvider(IAuthSession authSession, IOAuthTokens tokens) { var userSession = authSession as AuthUserSession; if (userSession == null) { return; } userSession.TwitterUserId = tokens.UserId ?? userSession.TwitterUserId; userSession.TwitterScreenName = tokens.UserName ?? userSession.TwitterScreenName; userSession.DisplayName = tokens.DisplayName ?? userSession.DisplayName; }
public override void OnAuthenticated (IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo) { base.OnAuthenticated (authService, session, tokens, authInfo); try { var mail = new MailAddress (session.Email); // We use a very simple authentification scheme for now solely based on a @xamarin.com email address if (mail.Host == "xamarin.com") { Roles.Add (RoleNames.Admin); Permissions.AddRange (new [] { "CanAccess", "CanModify" }); } } catch { // Log } }
public override void LoadUserOAuthProvider(IAuthSession authSession, IOAuthTokens tokens) { var userSession = authSession as AuthUserSession; if (userSession == null) { return; } userSession.DisplayName = tokens.DisplayName ?? userSession.DisplayName; userSession.FirstName = tokens.FirstName ?? userSession.FirstName; userSession.LastName = tokens.LastName ?? userSession.LastName; userSession.PrimaryEmail = tokens.Email ?? userSession.PrimaryEmail ?? userSession.Email; }
protected override void LoadUserAuthInfo(AuthUserSession userSession, IOAuthTokens tokens, Dictionary <string, string> authInfo) { var claims = StsConfigSection.Settings.Claims; tokens.UserId = authInfo[claims["id"].ClaimUri]; tokens.UserName = authInfo[claims["username"].ClaimUri]; tokens.FirstName = authInfo[claims["first_name"].ClaimUri]; tokens.LastName = authInfo[claims["last_name"].ClaimUri]; tokens.Email = authInfo[claims["email"].ClaimUri]; tokens.DisplayName = !string.IsNullOrWhiteSpace(tokens.FirstName) && !string.IsNullOrWhiteSpace(tokens.LastName) ? string.Format("{0} {1}", tokens.FirstName, tokens.LastName) : authInfo[claims["name"].ClaimUri]; LoadUserOAuthProvider(userSession, tokens); }
public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary <string, string> authInfo) { session.ReferrerUrl = referrerUrl; session.IsAuthenticated = true; var user = StorageManager.GetPartnerAccountByUsername(session.UserAuthName); session.UserName = user.UserName; session.Id = user.ClientId; session.Roles = new List <string>() { user.Role.ToString() }; authService.SaveSession(session, new TimeSpan(7, 0, 0, 0)); }
public string CreateOrMergeAuthSession(IAuthSession authSession, IOAuthTokens tokens) { var userAuth = GetUserAuth(authSession, tokens) ?? new UserAuth(); var query = Query.And( Query.EQ("Provider", tokens.Provider), Query.EQ("UserId", tokens.UserId) ); var providerCollection = mongoDatabase.GetCollection <UserOAuthProvider>(UserOAuthProvider_Col); var oAuthProvider = providerCollection.FindOne(query); if (oAuthProvider == null) { oAuthProvider = new UserOAuthProvider { Provider = tokens.Provider, UserId = tokens.UserId, }; } oAuthProvider.PopulateMissing(tokens); userAuth.PopulateMissing(oAuthProvider); userAuth.ModifiedDate = DateTime.UtcNow; if (userAuth.CreatedDate == default(DateTime)) { userAuth.CreatedDate = userAuth.ModifiedDate; } SaveUser(userAuth); if (oAuthProvider.Id == default(int)) { oAuthProvider.Id = IncUserOAuthProviderCounter(); } oAuthProvider.UserAuthId = userAuth.Id; if (oAuthProvider.CreatedDate == default(DateTime)) { oAuthProvider.CreatedDate = userAuth.ModifiedDate; } oAuthProvider.ModifiedDate = userAuth.ModifiedDate; providerCollection.Save(oAuthProvider); return(oAuthProvider.UserAuthId.ToString(CultureInfo.InvariantCulture)); }
public string CreateOrMergeAuthSession(IAuthSession authSession, IOAuthTokens tokens) { var userAuth = GetUserAuth(authSession, tokens) ?? new UserAuth(); using (var session = _documentStore.OpenSession()) { var oAuthProvider = session .Query <ServiceStack_UserAuth_ByOAuthProvider.Result, ServiceStack_UserAuth_ByOAuthProvider>() .Customize(x => x.WaitForNonStaleResultsAsOfNow()) .Where(q => q.Provider == tokens.Provider && q.UserId == tokens.UserId) .OfType <UserOAuthProvider>() .FirstOrDefault(); if (oAuthProvider == null) { oAuthProvider = new UserOAuthProvider { Provider = tokens.Provider, UserId = tokens.UserId, }; } oAuthProvider.PopulateMissing(tokens); userAuth.PopulateMissing(oAuthProvider); userAuth.ModifiedDate = DateTime.UtcNow; if (userAuth.CreatedDate == default(DateTime)) { userAuth.CreatedDate = userAuth.ModifiedDate; } session.Store(userAuth); session.SaveChanges(); oAuthProvider.UserAuthId = userAuth.Id; if (oAuthProvider.CreatedDate == default(DateTime)) { oAuthProvider.CreatedDate = userAuth.ModifiedDate; } oAuthProvider.ModifiedDate = userAuth.ModifiedDate; session.Store(oAuthProvider); session.SaveChanges(); return(oAuthProvider.UserAuthId.ToString(CultureInfo.InvariantCulture)); } }
public string CreateOrMergeAuthSession(IAuthSession authSession, IOAuthTokens tokens) { using (var redis = factory.GetClient()) { UserOAuthProvider oAuthProvider = null; var oAuthProviderId = GetAuthProviderByUserId(redis, tokens.Provider, tokens.UserId); if (!oAuthProviderId.IsNullOrEmpty()) { oAuthProvider = redis.As <UserOAuthProvider>().GetById(oAuthProviderId); } var userAuth = GetUserAuth(redis, authSession, tokens) ?? new UserAuth { Id = redis.As <UserAuth>().GetNextSequence(), }; if (oAuthProvider == null) { oAuthProvider = new UserOAuthProvider { Id = redis.As <UserOAuthProvider>().GetNextSequence(), UserAuthId = userAuth.Id, Provider = tokens.Provider, UserId = tokens.UserId, }; var idx = IndexProviderToUserIdHash(tokens.Provider); redis.SetEntryInHash(idx, tokens.UserId, oAuthProvider.Id.ToString(CultureInfo.InvariantCulture)); } oAuthProvider.PopulateMissing(tokens); userAuth.PopulateMissing(oAuthProvider); userAuth.ModifiedDate = DateTime.UtcNow; if (oAuthProvider.CreatedDate == default(DateTime)) { oAuthProvider.CreatedDate = userAuth.ModifiedDate; } oAuthProvider.ModifiedDate = userAuth.ModifiedDate; redis.Store(userAuth); redis.Store(oAuthProvider); redis.AddItemToSet(IndexUserAuthAndProviderIdsSet(userAuth.Id), oAuthProvider.Id.ToString(CultureInfo.InvariantCulture)); return(userAuth.Id.ToString(CultureInfo.InvariantCulture)); } }
public string CreateOrMergeAuthSession(IAuthSession authSession, IOAuthTokens tokens) { var userAuth = GetUserAuth(authSession, tokens) ?? new UserAuth(); return(dbFactory.Run(db => { var oAuthProvider = db.Select <ABUserOAuthProvider>(q => q.Provider == tokens.Provider && q.UserId == tokens.UserId).FirstOrDefault(); if (oAuthProvider == null) { oAuthProvider = new ABUserOAuthProvider { Provider = tokens.Provider, UserId = tokens.UserId, }; } oAuthProvider.PopulateMissing(tokens); userAuth.PopulateMissing(oAuthProvider); userAuth.ModifiedDate = DateTime.UtcNow; if (userAuth.CreatedDate == default(DateTime)) { userAuth.CreatedDate = userAuth.ModifiedDate; } db.Save(userAuth); oAuthProvider.UserAuthId = userAuth.Id != default(int) ? userAuth.Id : (int)db.GetLastInsertId(); if (oAuthProvider.CreatedDate == default(DateTime)) { oAuthProvider.CreatedDate = userAuth.ModifiedDate; } oAuthProvider.ModifiedDate = userAuth.ModifiedDate; db.Save(oAuthProvider); return oAuthProvider.UserAuthId.ToString(CultureInfo.InvariantCulture); })); }
public string CreateOrMergeAuthSession(IAuthSession authSession, IOAuthTokens tokens) { var userAuth = GetUserAuth(authSession, tokens) ?? new UserAuth(); using (var session = _documentStore.OpenSession()) { var oAuthProvider = session.Load<UserOAuthProvider>().FirstOrDefault(q => q.Provider == tokens.Provider && q.UserId == tokens.UserId); if (oAuthProvider == null) { oAuthProvider = new UserOAuthProvider { Provider = tokens.Provider, UserId = tokens.UserId, }; } oAuthProvider.PopulateMissing(tokens); userAuth.PopulateMissing(oAuthProvider); userAuth.ModifiedDate = DateTime.UtcNow; if (userAuth.CreatedDate == default(DateTime)) userAuth.CreatedDate = userAuth.ModifiedDate; session.Store(userAuth); session.SaveChanges(); //oAuthProvider.UserAuthId = userAuth.Id != default(int) // ? userAuth.Id // : (int)db.GetLastInsertId(); if (oAuthProvider.CreatedDate == default(DateTime)) oAuthProvider.CreatedDate = userAuth.ModifiedDate; oAuthProvider.ModifiedDate = userAuth.ModifiedDate; session.Store(oAuthProvider); session.SaveChanges(); return oAuthProvider.UserAuthId.ToString(CultureInfo.InvariantCulture); } }
public virtual void PopulateMissing(IOAuthTokens withTokens) { if (!withTokens.UserId.IsNullOrEmpty()) { this.UserId = withTokens.UserId; } if (!withTokens.UserName.IsNullOrEmpty()) { this.UserName = withTokens.UserName; } if (!withTokens.RequestToken.IsNullOrEmpty()) { this.RequestToken = withTokens.RequestToken; } if (!withTokens.RequestTokenSecret.IsNullOrEmpty()) { this.RequestTokenSecret = withTokens.RequestTokenSecret; } if (!withTokens.AccessToken.IsNullOrEmpty()) { this.AccessToken = withTokens.AccessToken; } if (!withTokens.AccessTokenSecret.IsNullOrEmpty()) { this.AccessTokenSecret = withTokens.AccessTokenSecret; } if (!withTokens.DisplayName.IsNullOrEmpty()) { this.DisplayName = withTokens.DisplayName; } if (!withTokens.FirstName.IsNullOrEmpty()) { this.FirstName = withTokens.FirstName; } if (!withTokens.LastName.IsNullOrEmpty()) { this.LastName = withTokens.LastName; } if (!withTokens.Email.IsNullOrEmpty()) { this.Email = withTokens.Email; } }
protected override void LoadUserAuthInfo(AuthUserSession userSession, IOAuthTokens tokens, Dictionary <string, string> authInfo) { try { tokens.UserId = authInfo["user_id"]; tokens.UserName = authInfo["username"]; tokens.DisplayName = authInfo["name"]; tokens.FirstName = authInfo["first_name"]; tokens.LastName = authInfo["last_name"]; tokens.Email = authInfo["email"]; userSession.UserAuthName = tokens.Email; this.LoadUserOAuthProvider(userSession, tokens); } catch (Exception ex) { Log.Error("Could not retrieve Profile info for '{0}'".Fmt(tokens.DisplayName), ex); } }
public virtual object Authenticate(IServiceBase service, Auth request, IAuthSession session, IOAuthTokens tokens, OAuthAuthorizer oAuth) { //Default oAuth logic based on Twitter's oAuth workflow if (!tokens.RequestToken.IsNullOrEmpty() && !request.oauth_token.IsNullOrEmpty()) { oAuth.RequestToken = tokens.RequestToken; oAuth.RequestTokenSecret = tokens.RequestTokenSecret; oAuth.AuthorizationToken = request.oauth_token; oAuth.AuthorizationVerifier = request.oauth_verifier; if (oAuth.AcquireAccessToken()) { tokens.AccessToken = oAuth.AccessToken; tokens.AccessTokenSecret = oAuth.AccessTokenSecret; session.OnAuthenticated(service, tokens, oAuth.AuthInfo); service.SaveSession(session); //Haz access! return(service.Redirect(session.ReferrerUrl.AddHashParam("s", "1"))); } //No Joy :( tokens.RequestToken = null; tokens.RequestTokenSecret = null; service.SaveSession(session); return(service.Redirect(session.ReferrerUrl.AddHashParam("f", "AccessTokenFailed"))); } if (oAuth.AcquireRequestToken()) { tokens.RequestToken = oAuth.RequestToken; tokens.RequestTokenSecret = oAuth.RequestTokenSecret; service.SaveSession(session); //Redirect to OAuth provider to approve access return(service.Redirect(this.AuthorizeUrl .AddQueryParam("oauth_token", tokens.RequestToken) .AddQueryParam("oauth_callback", session.ReferrerUrl))); } return(service.Redirect(session.ReferrerUrl.AddHashParam("f", "RequestTokenFailed"))); }
public override bool IsAuthorized(IAuthSession session, IOAuthTokens tokens, Auth request = null) { if (tokens != null && !string.IsNullOrEmpty(tokens.Email)) { var repository = new UserRepository(); var user = repository.GetByEmail(tokens.Email); if (user == null) { throw new InvalidOperationException("You are not a registered user!"); return false; } } if (request != null) { if (!LoginMatchesSession(session, request.UserName)) return false; } // For OpenId, AccessTokenSecret is null/empty, but UserId is populated w/ authenticated url from openId providers return tokens != null && !string.IsNullOrEmpty(tokens.UserId); }
protected override void LoadUserAuthInfo(AuthUserSession userSession, IOAuthTokens tokens, System.Collections.Generic.Dictionary<string, string> authInfo) { try { var json = AuthHttpGateway.DownloadFacebookUserInfo(tokens.AccessTokenSecret); var obj = JsonObject.Parse(json); tokens.UserId = obj.Get("id"); tokens.UserName = obj.Get("username"); tokens.DisplayName = obj.Get("name"); tokens.FirstName = obj.Get("first_name"); tokens.LastName = obj.Get("last_name"); tokens.Email = obj.Get("email"); LoadUserOAuthProvider(userSession, tokens); } catch (Exception ex) { Log.Error("Could not retrieve facebook user info for '{0}'".Fmt(tokens.DisplayName), ex); } }
/// <summary>Loads user authentication information.</summary> /// /// <param name="userSession">The user session.</param> /// <param name="tokens"> The tokens.</param> /// <param name="authInfo"> Information describing the authentication.</param> protected override void LoadUserAuthInfo(AuthUserSession userSession, IOAuthTokens tokens, System.Collections.Generic.Dictionary <string, string> authInfo) { try { var json = AuthHttpGateway.DownloadFacebookUserInfo(tokens.AccessTokenSecret); var obj = JsonObject.Parse(json); tokens.UserId = obj.Get("id"); tokens.UserName = obj.Get("username"); tokens.DisplayName = obj.Get("name"); tokens.FirstName = obj.Get("first_name"); tokens.LastName = obj.Get("last_name"); tokens.Email = obj.Get("email"); LoadUserOAuthProvider(userSession, tokens); } catch (Exception ex) { Log.Error("Could not retrieve facebook user info for '{0}'".Fmt(tokens.DisplayName), ex); } }
public string CreateOrMergeAuthSession(IAuthSession authSession, IOAuthTokens tokens) { var userAuth = GetUserAuth(authSession, tokens) ?? new UserAuthPersistenceDto(); var oAuthProvider = Session.QueryOver <UserOAuthProviderPersistenceDto>() .Where(x => x.Provider == tokens.Provider) .And(x => x.UserId == tokens.UserId) .SingleOrDefault(); if (oAuthProvider == null) { oAuthProvider = new UserOAuthProviderPersistenceDto { Provider = tokens.Provider, UserId = tokens.UserId, }; } oAuthProvider.PopulateMissing(tokens); userAuth.PopulateMissing(oAuthProvider); userAuth.ModifiedDate = DateTime.UtcNow; if (userAuth.CreatedDate == default(DateTime)) { userAuth.CreatedDate = userAuth.ModifiedDate; } Session.Save(userAuth); oAuthProvider.UserAuthId = userAuth.Id; if (oAuthProvider.CreatedDate == default(DateTime)) { oAuthProvider.CreatedDate = userAuth.ModifiedDate; } oAuthProvider.ModifiedDate = userAuth.ModifiedDate; Session.Save(oAuthProvider); return(oAuthProvider.UserAuthId.ToString(CultureInfo.InvariantCulture)); }
public UserAuth GetUserAuth(IAuthSession authSession, IOAuthTokens tokens) { if (!authSession.UserAuthId.IsNullOrEmpty()) { var userAuth = GetUserAuth(authSession.UserAuthId); if (userAuth != null) { return(userAuth); } } if (!authSession.UserAuthName.IsNullOrEmpty()) { var userAuth = GetUserAuthByUserName(authSession.UserAuthName); if (userAuth != null) { return(userAuth); } } if (tokens == null || tokens.Provider.IsNullOrEmpty() || tokens.UserId.IsNullOrEmpty()) { return(null); } using (var session = _documentStore.OpenSession()) { var oAuthProvider = session .Query <ServiceStack_UserAuth_ByOAuthProvider.Result, ServiceStack_UserAuth_ByOAuthProvider>() .Customize(x => x.WaitForNonStaleResultsAsOfNow()) .Where(q => q.Provider == tokens.Provider && q.UserId == tokens.UserId) .OfType <UserOAuthProvider>() .FirstOrDefault(); if (oAuthProvider != null) { var userAuth = session.Load <UserAuth>(oAuthProvider.UserAuthId); return(userAuth); } return(null); } }
public UserAuth GetUserAuth(IAuthSession authSession, IOAuthTokens tokens) { if (!authSession.UserAuthId.IsNullOrEmpty()) { var userAuth = GetUserAuth(authSession.UserAuthId); if (userAuth != null) { return(userAuth); } } if (!authSession.UserAuthName.IsNullOrEmpty()) { var userAuth = GetUserAuthByUserName(authSession.UserAuthName); if (userAuth != null) { return(userAuth); } } if (tokens == null || tokens.Provider.IsNullOrEmpty() || tokens.UserId.IsNullOrEmpty()) { return(null); } var query = Query.And( Query.EQ("Provider", tokens.Provider), Query.EQ("UserId", tokens.UserId) ); var providerCollection = mongoDatabase.GetCollection <UserOAuthProvider>(UserOAuthProvider_Col); var oAuthProvider = providerCollection.FindOne(query); if (oAuthProvider != null) { var userAuthCollection = mongoDatabase.GetCollection <UserAuth>(UserAuth_Col); var userAuth = userAuthCollection.FindOneById(oAuthProvider.UserAuthId); return(userAuth); } return(null); }
public string CreateOrMergeAuthSession(IAuthSession authSession, IOAuthTokens tokens) { UserAuth userAuth = this.GetUserAuth(authSession, tokens) ?? new UserAuth(); return OrmLiteConnectionFactoryExtensions.Run<string>(this.dbFactory, (Func<IDbConnection, string>) (db => { IDbConnection temp_16 = db; ParameterExpression local_2 = Expression.Parameter(typeof (UserOAuthProvider), "q"); // ISSUE: method reference // ISSUE: field reference // ISSUE: method reference // ISSUE: method reference // ISSUE: method reference // ISSUE: field reference // ISSUE: method reference // ISSUE: method reference Expression<Func<UserOAuthProvider, bool>> temp_66 = Expression.Lambda<Func<UserOAuthProvider, bool>>((Expression) Expression.AndAlso((Expression) Expression.Equal((Expression) Expression.Property((Expression) local_2, (MethodInfo) MethodBase.GetMethodFromHandle(__methodref (UserOAuthProvider.get_Provider))), (Expression) Expression.Property((Expression) Expression.Field((Expression) Expression.Constant((object) this), FieldInfo.GetFieldFromHandle(__fieldref (OrmLiteAuthRepository.\u003C\u003Ec__DisplayClass24.tokens))), (MethodInfo) MethodBase.GetMethodFromHandle(__methodref (IOAuthTokens.get_Provider))), false, (MethodInfo) MethodBase.GetMethodFromHandle(__methodref (string.op_Equality))), (Expression) Expression.Equal((Expression) Expression.Property((Expression) local_2, (MethodInfo) MethodBase.GetMethodFromHandle(__methodref (UserOAuthProvider.get_UserId))), (Expression) Expression.Property((Expression) Expression.Field((Expression) Expression.Constant((object) this), FieldInfo.GetFieldFromHandle(__fieldref (OrmLiteAuthRepository.\u003C\u003Ec__DisplayClass24.tokens))), (MethodInfo) MethodBase.GetMethodFromHandle(__methodref (IOAuthTokens.get_UserId))), false, (MethodInfo) MethodBase.GetMethodFromHandle(__methodref (string.op_Equality)))), new ParameterExpression[1] { local_2 }); UserOAuthProvider local_0 = Enumerable.FirstOrDefault<UserOAuthProvider>((IEnumerable<UserOAuthProvider>) ReadConnectionExtensions.Select<UserOAuthProvider>(temp_16, temp_66)); if (local_0 == null) local_0 = new UserOAuthProvider() { Provider = tokens.Provider, UserId = tokens.UserId }; local_0.PopulateMissing(tokens); userAuth.PopulateMissing(local_0); userAuth.ModifiedDate = DateTime.UtcNow; if (userAuth.CreatedDate == new DateTime()) userAuth.CreatedDate = userAuth.ModifiedDate; OrmLiteWriteConnectionExtensions.Save<UserAuth>(db, userAuth); local_0.UserAuthId = userAuth.Id != 0 ? userAuth.Id : (int) OrmLiteReadConnectionExtensions.GetLastInsertId(db); if (local_0.CreatedDate == new DateTime()) local_0.CreatedDate = userAuth.ModifiedDate; local_0.ModifiedDate = userAuth.ModifiedDate; OrmLiteWriteConnectionExtensions.Save<UserOAuthProvider>(db, local_0); return local_0.UserAuthId.ToString((IFormatProvider) CultureInfo.InvariantCulture); })); }
public string CreateOrMergeAuthSession(IAuthSession authSession, IOAuthTokens tokens) { var userAuth = GetUserAuth(authSession, tokens) ?? new UserAuth(); return dbFactory.Exec(dbCmd => { var oAuthProvider = dbCmd.Select<UserOAuthProvider>(q => q.Provider == tokens.Provider && q.UserId == tokens.UserId).FirstOrDefault(); if (oAuthProvider == null) { oAuthProvider = new UserOAuthProvider { Provider = tokens.Provider, UserId = tokens.UserId, }; } oAuthProvider.PopulateMissing(tokens); userAuth.PopulateMissing(oAuthProvider); userAuth.ModifiedDate = DateTime.UtcNow; if (userAuth.CreatedDate == default(DateTime)) userAuth.CreatedDate = userAuth.ModifiedDate; dbCmd.Save(userAuth); oAuthProvider.UserAuthId = userAuth.Id != default(int) ? userAuth.Id : (int)dbCmd.GetLastInsertId(); if (oAuthProvider.CreatedDate == default(DateTime)) oAuthProvider.CreatedDate = userAuth.ModifiedDate; oAuthProvider.ModifiedDate = userAuth.ModifiedDate; dbCmd.Save(oAuthProvider); return oAuthProvider.UserAuthId.ToString(CultureInfo.InvariantCulture); }); }
public UserAuth GetUserAuth(IAuthSession authSession, IOAuthTokens tokens) { if (!authSession.UserAuthId.IsNullOrEmpty()) { var userAuth = GetUserAuth(authSession.UserAuthId); if (userAuth != null) { return(userAuth); } } if (!authSession.UserAuthName.IsNullOrEmpty()) { var userAuth = GetUserAuthByUserName(authSession.UserAuthName); if (userAuth != null) { return(userAuth); } } if (tokens == null || tokens.Provider.IsNullOrEmpty() || tokens.UserId.IsNullOrEmpty()) { return(null); } var oAuthProvider = Session.QueryOver <UserOAuthProviderPersistenceDto>() .Where(x => x.Provider == tokens.Provider) .And(x => x.UserId == tokens.UserId) .SingleOrDefault(); if (oAuthProvider != null) { return(Session.QueryOver <UserAuthPersistenceDto>() .Where(x => x.Id == oAuthProvider.UserAuthId) .SingleOrDefault()); } return(null); }
public UserAuth GetUserAuth(IAuthSession authSession, IOAuthTokens tokens) { if (!authSession.UserAuthId.IsNullOrEmpty()) { var userAuth = GetUserAuth(authSession.UserAuthId); if (userAuth != null) { return(userAuth); } } if (!authSession.UserAuthName.IsNullOrEmpty()) { var userAuth = GetUserAuthByUserName(authSession.UserAuthName); if (userAuth != null) { return(userAuth); } } if (tokens == null || tokens.Provider.IsNullOrEmpty() || tokens.UserId.IsNullOrEmpty()) { return(null); } return(dbFactory.Run(db => { var oAuthProvider = db.Select <ABUserOAuthProvider>(q => q.Provider == tokens.Provider && q.UserId == tokens.UserId).FirstOrDefault(); if (oAuthProvider != null) { var userAuth = db.GetByIdOrDefault <ABUserAuth>(oAuthProvider.UserAuthId); return userAuth; } return null; })); }
public UserAuth GetUserAuth(IAuthSession authSession, IOAuthTokens tokens) { if (!authSession.UserAuthId.IsNullOrEmpty()) { var userAuth = GetUserAuth(authSession.UserAuthId); if (userAuth != null) { return(userAuth); } } if (!authSession.UserName.IsNullOrEmpty()) { var userAuth = GetUserAuthByUserName(authSession.UserName); if (userAuth != null) { return(userAuth); } } if (tokens == null || tokens.Provider.IsNullOrEmpty() || tokens.UserId.IsNullOrEmpty()) { return(null); } return(dbFactory.Exec(dbCmd => { var oAuthProvider = dbCmd.FirstOrDefault <UserOAuthProvider>( "Provider = {0} AND UserId = {1}", tokens.Provider, tokens.UserId); if (oAuthProvider != null) { var userAuth = dbCmd.GetByIdOrDefault <UserAuth>(oAuthProvider.UserAuthId); return userAuth; } return null; })); }
/// <summary> /// Load the UserAuth info into the session. /// </summary> /// <param name="userSession"> /// The User session. /// </param> /// <param name="tokens"> /// The OAuth tokens. /// </param> /// <param name="authInfo"> /// The auth info. /// </param> protected override void LoadUserAuthInfo(AuthUserSession userSession, IOAuthTokens tokens, Dictionary <string, string> authInfo) { try { var contents = AuthHttpGateway.DownloadYammerUserInfo(tokens.UserId); var authObj = JsonObject.Parse(contents); tokens.UserId = authObj.Get("id"); tokens.UserName = authObj.Get("name"); tokens.DisplayName = authObj.Get("full_name"); tokens.FullName = authObj.Get("full_name"); tokens.FirstName = authObj.Get("first_name"); tokens.LastName = authObj.Get("last_name"); var emails = authObj.Object("contact").ArrayObjects("email_addresses").ConvertAll(x => new EmailAddresses { Type = x.Get("type"), Address = x.Get("address") }); var email = emails.FirstOrDefault(q => q.Type == "primary"); if (email != null) { tokens.Email = email.Address; } // Pass along this.LoadUserOAuthProvider(userSession, tokens); } catch (Exception ex) { Log.Error("Could not retrieve Yammer user info for '{0}'".Fmt(tokens.DisplayName), ex); } }