public async Task VerifyPost(string PostId) { var db = new SoLoudContext(); Post post = db.Posts.FirstOrDefault(x => x.Id == PostId); if (post == null) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound) { Content = new StringContent("No Post with such id") }); } else if (post.PostStatus.Equals(PostStatus.Verified)) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent("Post already verified") }); } var user = db.Users.Include("Claims").FirstOrDefault(x => x.Id == post.UserId); if (user == null) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.ExpectationFailed) { Content = new StringContent(String.Format("Post is connected to user with id {0} but no such user was found", post.UserId)) }); } var FbClaim = user.Claims.FirstOrDefault(x => x.ClaimType == SoloudClaimTypes.FacebookAccessToken.ToString() && x.UserId == user.Id); if (FbClaim == null) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.ExpectationFailed) { Content = new StringContent(String.Format("No saved fb token was found for user with id {0}", user.Id)) }); } var EncryptedFbToken = FbClaim.ClaimValue; var DecryptedFbToken = AESThenHMAC.SimpleDecryptWithPassword(EncryptedFbToken, EncryptionKey); var fbClient = new FbClient(DecryptedFbToken); var fbResponse = await fbClient.MultiphotoStory(post.Photos.ToList(), post.Text, post.PlaceId); post.VerifiedAt = DateTimeOffset.Now; //post.IsVerified = true; post.PostStatus = PostStatus.Verified; post.FacebookId = fbResponse.id; db.SaveChanges(); }
public ActionResult Create(ContestSentItem contest) { //if (!Request.Content.IsMimeMultipartContent()) //{ // this.Request.CreateResponse(HttpStatusCode.UnsupportedMediaType); //} //Stream req = Request.RequestContext.Content.ReadAsStreamAsync().Result; //HttpMultipartParser parser = new HttpMultipartParser(req, "file"); //if (parser.Success) //{ // MemoryStream ms = new MemoryStream(parser.FileContents); // HSSFWorkbook templateWorkbook = new HSSFWorkbook(ms); // HSSFSheet sheet = (HSSFSheet)templateWorkbook.GetSheetAt(0); //} //var asd = new byte[]; //Request.InputStream.Read() var a = Request; var newContest = new Contest(); newContest.Id = Guid.NewGuid().ToString(); newContest.UserId = UserId; newContest.Title = contest.Title; newContest.Description = contest.Description; newContest.EndingAt = contest.EndingAt; newContest.Category = contest.Category; //var imageurl = getImage(); //newContest.ProductImageUrl = imageurl; if (contest.ProductImage != null && contest.ProductImage.ContentLength > 0) { var newPhoto = new File() { FileName = System.IO.Path.GetFileName(contest.ProductImage.FileName), FileType = FileType.Photo, ContentType = contest.ProductImage.ContentType }; using (var reader = new System.IO.BinaryReader(contest.ProductImage.InputStream)) { newPhoto.Content = reader.ReadBytes(contest.ProductImage.ContentLength); } newContest.ExamplePhotos = new List <File>() { newPhoto }; } if (ModelState.IsValid) { db.Contests.Add(newContest); db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.UserId = new SelectList(db.Users, "Id", "Hometown", newContest.UserId); return(View(contest)); }
private async Task GrantResourceOwnerCredentialsFromFacebookToken(OAuthGrantResourceOwnerCredentialsContext context) { //Find External Token var facebookToken = getExternalToken(context); if (facebookToken == null) { throw new Exception("ExternalToken is null"); } //Get User Using FacebookToken var fb = new FacebookClient(facebookToken); Facebook.Me me = fb.Get <Facebook.Me>("me", new { fields = "id, name, email, gender, birthday, picture.type(large)" }); var User = userManager.FindByEmail(me.email); if (User == null) { var AccCtrl = new AccountController(HttpContext.Current.GetOwinContext().GetUserManager <ApplicationUserManager>(), HttpContext.Current.GetOwinContext().GetUserManager <ApplicationSignInManager>()); User = await AccCtrl.CreateUser("User", me.email, me.email, null); } //Save fbtoken to db var db = new SoLoudContext(); //We need to refetch from db in order to be able to edit/add claims. If we dont the context is not tracking the Claim entities and changes will not save User = db.Users.Include("Claims").FirstOrDefault(x => x.Id == User.Id); var fbTokenClaim = User.Claims.FirstOrDefault(x => x.ClaimType == SoloudClaimTypes.FacebookAccessToken.ToString()); if (fbTokenClaim == null) { fbTokenClaim = new Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim() { ClaimType = SoloudClaimTypes.FacebookAccessToken.ToString() }; User.Claims.Add(fbTokenClaim); } fbTokenClaim.ClaimValue = AESThenHMAC.SimpleEncryptWithPassword(facebookToken, ConfigurationManager.AppSettings["EncryptionKey"].ToString()); db.SaveChanges(); //Create Token and return var identity = new ClaimsIdentity(context.Options.AuthenticationType); identity.AddClaim(new Claim("UserName", User.UserName)); identity.AddClaim(new Claim("UserId", User.Id)); identity.AddClaim(new Claim(SoloudClaimTypes.FacebookAccessToken.ToString(), facebookToken)); //find user roles var UserRoles = User.Roles.Join(db.Roles, x => x.RoleId, r => r.Id, (x, r) => r.Name); if (UserRoles != null && UserRoles.Count() > 0) { identity.AddClaim(new Claim("Roles", UserRoles.Aggregate((acc, cur) => acc += "," + cur))); } var props = new AuthenticationProperties(new Dictionary <string, string> { { "User", JsonConvert.SerializeObject(User) } }); var ticket = new AuthenticationTicket(identity, props); context.Validated(ticket); return; }