/// <summary> /// Attempt to locate an application user that matches the incoming oauth provider's user /// </summary> /// <param name="userConductor"></param> /// <param name="metadataConductor"></param> /// <param name="oauthUser"></param> /// <returns></returns> private static TUser FindUserByOAuthUser( IRepositoryConductor <TUser> userConductor, IRepositoryConductor <TUserMetadata> metadataConductor, IOAuthUser oauthUser ) { // Match by OAuth External Id var user = FindUserByMetadata(metadataConductor, oauthUser); if (user != null) { return(user); } // Match by email address user = FindUserByEmail(userConductor, oauthUser.Email); // Connect user to OAuth External Id for future requests if (user != null) { CreateMetadata(metadataConductor, user.Id, oauthUser); } return(user); }
private static TUser InstantiateUser(IOAuthUser oauthUser) => new TUser { Email = oauthUser.Email, FirstName = oauthUser.FirstName, LastName = oauthUser.LastName, UserName = oauthUser.Email };
IEnumerable<IPhoto> IPhotoService.GetPhotos(IOAuthUser owner, string tag) { var photos = PeopleGetPhotos(owner.Id, PhotoSearchExtras.Tags).ToList(); if (!String.IsNullOrWhiteSpace(tag)) { photos = photos.Where(p => p.Tags.Any(t => t == tag)).ToList(); } return photos.Select(p => new Photo { Id = p.PhotoId, Name = p.Title, ThumbNailUrl = p.ThumbnailUrl, SmallUrl = p.SmallUrl, LargeUrl = p.LargeUrl, Owner = owner, Tags = p.Tags }); }
private static TUser FindOrCreateUser( IOAuthUser oauthUser, IRepositoryConductor <TUser> conductor, IRepositoryConductor <TUserMetadata> metadataConductor, ILogger <IOAuthUser> logger ) { var user = FindUserByOAuthUser(conductor, metadataConductor, oauthUser); if (user != null) { return(user); } user = CreateUser(conductor, oauthUser); CreateMetadata(metadataConductor, user.Id, oauthUser); logger.LogInformation($"Created new {nameof(TUser)} '{user.Id}' for {oauthUser.UserMetadataName} {nameof(TOAuthUser)} '{oauthUser.Id}'"); return(user); }
public void SetUp() { _oAuthUserOne = RMM.GenerateStub<IOAuthUser>(); _oAuthUserOne.Id = "Id1"; _oAuthUserOne.UserName = "******"; _oAuthUserOne.FullName = "User One Of America"; _oAuthUserOne.AccessToken = "72157626737672178-oneoneoneoneone1"; _oAuthUserOne.AccessTokenSecret = "111111111111111"; _oAuthService = RMM.GenerateStub<IOAuthService>(); _oAuthService.Stub(s => s.GetOAuthAuthenticationUrl(null)).IgnoreArguments().Return(OAuthURL); _oAuthService.Stub(s => s.GetOAuthUser(@"72157626737672178-oneoneoneoneone1", @"5d1b96a26b494074")).Return(_oAuthUserOne); _userOneTags = new List<string> { "children", "school", "parents" }; _photoOne = RMM.GenerateStub<IPhoto>(); _photoOne.Id = @"PhotoIdOne"; _photoOne.Name = @"PhotoIdOne"; _photoOne.LargeUrl = @"http://www.flickr.com/large/one.jpg"; _photoOne.ThumbNailUrl = @"http://www.flickr.com/tn/one.jpg"; _photoOne.Owner = _oAuthUserOne; _photoOne.Tags = new List<string> { "children", "school" }; _photoTwo = RMM.GenerateStub<IPhoto>(); _photoTwo.Id = @"PhotoIdTwo"; _photoTwo.Name = @"PhotoIdTwo"; _photoTwo.LargeUrl = @"http://www.flickr.com/large/two.jpg"; _photoTwo.ThumbNailUrl = @"http://www.flickr.com/tn/two.jpg"; _photoTwo.Owner = _oAuthUserOne; _photoTwo.Tags = new List<string> { "parents" }; _photoThree = RMM.GenerateStub<IPhoto>(); _photoThree.Id = @"PhotoIdThree"; _photoThree.Name = @"PhotoIdThree"; _photoThree.LargeUrl = @"http://www.flickr.com/large/three.jpg"; _photoThree.ThumbNailUrl = @"http://www.flickr.com/tn/three.jpg"; _photoThree.Owner = _oAuthUserOne; _photoThree.Tags = new List<string> { "parents", "school" }; _photosUserOne = new List<IPhoto> { _photoOne, _photoTwo, _photoThree }; _photoService = RMM.GenerateMock<IPhotoService>(); _photoService.Stub(s => s.GetPhotos(_oAuthUserOne, String.Empty)).Return(_photosUserOne); _photoService.Stub(s => s.GetPhotos(_oAuthUserOne, "school")).Return(_photosUserOne.Where(p => p.Tags.Contains("school"))); _photoService.Stub(s => s.GetAllTags(_oAuthUserOne)).Return(_userOneTags); _builder = new TestControllerBuilder(); _controller = new HomeController(); _builder.InitializeController(_controller); ObjectFactory.Inject<IOAuthService>(_oAuthService); ObjectFactory.Inject<IPhotoService>(_photoService); }
private static TUserMetadata CreateMetadata(IRepositoryConductor <TUserMetadata> conductor, long userId, IOAuthUser oauthUser) => CreateMetadata(conductor, UserMetadataTypes.ExternalUserId, oauthUser.UserMetadataName, userId, oauthUser.Id);
private static TUser FindUserByMetadata(IRepositoryConductor <TUserMetadata> metadataConductor, IOAuthUser oauthUser) { var externalIdMetadataResult = metadataConductor .FindAll(e => e.Name == oauthUser.UserMetadataName && e.Type == UserMetadataTypes.ExternalUserId && e.Value == oauthUser.Id, includeProperties: nameof(IUserMetadata.User) ) .ThrowIfAnyErrors() .ResultObject; return(externalIdMetadataResult.FirstOrDefault()?.User as TUser); }
private static TUser CreateUser(IRepositoryConductor <TUser> conductor, IOAuthUser oauthUser) => CreateOrThrow(conductor, InstantiateUser(oauthUser));
IEnumerable<string> IPhotoService.GetAllTags(IOAuthUser owner) { return PeopleGetPhotos(owner.Id, PhotoSearchExtras.Tags).SelectMany(p => p.Tags).Where(t => !String.IsNullOrWhiteSpace(t)).Distinct(); }