Пример #1
0
        private static AppUser SyncUserWithHOAHome(AppUser claimedUser, IPersistanceFramework persistance)
        {
            Contract.Requires(claimedUser != null);
            Contract.Requires(persistance != null);
            var user = persistance.CreateQueryContext<AppUser>().Where(u => u.GoogleId == claimedUser.GoogleId).FirstOrDefault();
                if (user != null)
                {

                    user.LastLogin = DateTime.Now;
                    user.AccessToken = claimedUser.AccessToken;
                    user.AccessTokenSecret = claimedUser.AccessTokenSecret;
                    persistance.SaveChanges();
                    return user;
                }
                else
                {
                    claimedUser.LastLogin = DateTime.Now;
                    claimedUser.DisplayName = claimedUser.LastName + ", " + claimedUser.FirstName;
                    persistance.AttachNew(claimedUser);
                    persistance.SaveChanges();
                }

            return claimedUser;
        }
Пример #2
0
        public static AppUser HandleAuthenticationResponse(IAuthenticationResponse response, IPersistanceFramework persistance)
        {
            Contract.Requires(response != null);
            Contract.Requires(persistance != null);

            var attibuteExtension = response.GetExtension<FetchResponse>();
            var oAuth = response.GetExtension<AuthorizationApprovedResponse>();
            Contract.Assume(MvcApplication.GoogleWebConsumer.TokenManager is IOpenIdOAuthTokenManager);
            AuthorizedTokenResponse accessToken = MvcApplication.GoogleWebConsumer.ProcessUserAuthorization(response);

            if (accessToken == null)
            {
                throw new ApplicationException("User did not authorize access through google");
            }

            State.GoogleAccessToken = accessToken.AccessToken;

            AppUser claimedUser = new AppUser();
            claimedUser.AccessToken = accessToken.AccessToken;
            Contract.Assume(!string.IsNullOrEmpty(claimedUser.AccessToken));
            claimedUser.AccessTokenSecret = MvcApplication.GoogleTokenManager.GetTokenSecret(accessToken.AccessToken);
            claimedUser.GoogleId = response.ClaimedIdentifier;
            claimedUser.Email = attibuteExtension.Attributes[WellKnownAttributes.Contact.Email].Values.First();
            claimedUser.FirstName = attibuteExtension.Attributes[WellKnownAttributes.Name.First].Values.First();
            claimedUser.LastName = attibuteExtension.Attributes[WellKnownAttributes.Name.Last].Values.First();

            AppUser appUser = SyncUserWithHOAHome(claimedUser, persistance);

            FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,appUser.Id.ToString(), DateTime.Now,DateTime.Now.AddDays(10), false, appUser.ToCookieString(), FormsAuthentication.FormsCookiePath);
            System.Web.HttpContext.Current.Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket)));

            return appUser;
        }
Пример #3
0
 public ContentRepository(Guid neighborhoodId, IPersistanceFramework persistance)
 {
     Contract.Requires(persistance != null);
     _neighborhoodId = neighborhoodId;
     _persistance = persistance;
 }