Example #1
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));
 }
 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));
 }
Example #3
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);
            }
        }
Example #4
0
 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();
            });
        }
Example #11
0
        /// <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();
            }));
        }
Example #13
0
        /// <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);
            }
        }
Example #14
0
        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();
            }
        }
Example #16
0
 private void SaveUserAuth(IUserAuthRepository provider, IOAuthTokens tokens)
 {
     if (provider == null)
     {
         return;
     }
     this.UserAuthId = provider.CreateOrMergeAuthSession(this, tokens);
 }
Example #17
0
        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);
        }
Example #20
0
        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;
		}
Example #22
0
 /// <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);
        }
Example #24
0
        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;
        }
Example #26
0
            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);
            }
Example #27
0
        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);
            }
        }
Example #29
0
 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));
 }
Example #30
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>>();
        }
Example #35
0
        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));
        }
Example #36
0
        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);
        }
Example #40
0
        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));
        }
Example #42
0
        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));
            }
        }
Example #43
0
        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);
            }
        }
Example #46
0
 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);
            }
        }
Example #48
0
        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")));
        }
Example #49
0
        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));
        }
Example #53
0
        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);
            }
        }