public static async Task <PingListEntry> AddEntryToList(Pinglist list, string username, int?userId, string remarks, DataContext ctx) { username = username?.Trim(); var frUser = await(username != null ? FRHelpers.GetOrUpdateFRUser(username, ctx) : FRHelpers.GetOrUpdateFRUser(userId.Value, ctx)); if (frUser == null) { throw new System.Exception($"Could not validate the existence of user '{username ?? userId.ToString()}.'"); } if (ctx.Pinglists.Find(list.Id).Entries.Any(x => x.FRUser.Id == frUser.Id)) { return(list.Entries.FirstOrDefault(x => x.FRUser.Id == frUser.Id)); } var entry = new PingListEntry { FRUser = frUser, GeneratedId = CodeHelpers.GenerateId(5, list.Entries.Select(x => x.GeneratedId).ToList()), SecretKey = CodeHelpers.GenerateId(), Remarks = remarks }; list.Entries.Add(entry); return(entry); }
private bool HasAccess(Pinglist list, string secretKey) { if (list.IsPublic || (list.SecretKey == secretKey && list.Creator == null) || (list.Creator != null && list.Creator.Id == HttpContext.GetOwinContext().Authentication.User.Identity.GetUserId <int>())) { return(true); } return(false); }
private bool IsOwner(Pinglist list, string secretKey) { if (list.Creator == null && list.SecretKey == secretKey) { return(true); } if (list.Creator != null && Request.IsAuthenticated && list.Creator.Id == HttpContext.GetOwinContext().Authentication.User.Identity.GetUserId <int>()) { return(true); } return(false); }