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; }
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; }
public ContentRepository(Guid neighborhoodId, IPersistanceFramework persistance) { Contract.Requires(persistance != null); _neighborhoodId = neighborhoodId; _persistance = persistance; }