public async Task <IActionResult> Index() { var user = await userManager.FindByNameAsync(User.Identity.Name); var userGroups = user.PuckUserGroups?.Split(',', StringSplitOptions.RemoveEmptyEntries) ?? new string[] { }; var predicate = PredicateBuilder.New <PuckWorkflowItem>(); foreach (var group in userGroups) { predicate = predicate.Or(x => x.Group.Equals(group)); } predicate.Or(x => x.Assignees.Contains(user.UserName)); var model = repo.GetPuckWorkflowItem().AsExpandable().Where(predicate).Where(x => !x.Complete).ToList(); model.AddRange(repo.GetPuckWorkflowItem().Where(x => x.Complete).OrderByDescending(x => x.CompleteDate).Take(10).ToList()); var ids = model.Select(x => x.ContentId); var names = repo.GetPuckRevision().Where(x => x.Current && ids.Contains(x.Id)).Select(x => new PuckRevision { NodeName = x.NodeName, Id = x.Id, Variant = x.Variant }).ToList(); var nameDict = new Dictionary <Guid, string>(); names.ForEach(x => nameDict[x.Id] = x.NodeName + $" - {x.Variant}"); ViewBag.Names = nameDict; return(View(model)); }
private async Task <List <PuckUserViewModel> > GetUsers() { var model = new List <PuckUserViewModel>(); var puckRole = await roleManager.FindByNameAsync(PuckRoles.Puck); var userCollection = repo.GetPuckUser().Where(x => x.Roles.Any(xx => xx.RoleId == puckRole.Id)).ToList(); foreach (PuckUser pu in userCollection) { var puvm = new PuckUserViewModel(); puvm.LastLoginDate = pu.PuckLastLoginDate; puvm.LastLoginDateString = "user has never logged in"; if (puvm.LastLoginDate.HasValue) { puvm.LastLoginDateString = puvm.LastLoginDate.Value.ToString("dd/MM/yyyy hh:mm"); } puvm.UserName = pu.UserName; puvm.Email = pu.Email; puvm.FirstName = pu.PuckFirstName; puvm.Surname = pu.PuckSurname; puvm.User = pu; puvm.Roles = (await userManager.GetRolesAsync(pu)).ToList(); if (pu.PuckStartNodeId != Guid.Empty) { puvm.StartNode = new List <PuckPicker> { new PuckPicker { Id = pu.PuckStartNodeId.Value } } } ; puvm.UserVariant = pu.PuckUserVariant; puvm.StartPath = "/"; if (pu.PuckStartNodeId != Guid.Empty) { var node = repo.GetPuckRevision().FirstOrDefault(x => x.Id == pu.PuckStartNodeId && x.Current); if (node != null) { puvm.StartPath = node.Path; } } model.Add(puvm); } return(model); }
private async Task <List <PuckUserViewModel> > GetUsers() { var model = new List <PuckUserViewModel>(); var puckRole = await roleManager.FindByNameAsync(PuckRoles.Puck); var userCollection = repo.GetPuckUser().Where(x => x.Roles.Any(xx => xx.RoleId == puckRole.Id)).ToList(); foreach (PuckUser pu in userCollection) { var puvm = new PuckUserViewModel(); puvm.LastLoginDate = pu.PuckLastLoginDate; puvm.LastLoginDateString = "user has never logged in"; if (puvm.LastLoginDate.HasValue) { puvm.LastLoginDateString = puvm.LastLoginDate.Value.ToString("dd/MM/yyyy hh:mm"); } puvm.UserName = pu.UserName; puvm.Email = pu.Email; puvm.FirstName = pu.PuckFirstName; puvm.Surname = pu.PuckSurname; puvm.User = pu; puvm.Roles = (await userManager.GetRolesAsync(pu)).ToList(); if (!string.IsNullOrEmpty(pu.PuckStartNodeIds)) { puvm.StartNodes = pu.PuckStartNodeIds.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(x => new PuckReference { Id = Guid.Parse(x) }).ToList(); } puvm.UserVariant = pu.PuckUserVariant; puvm.StartPaths = "/"; if (puvm.StartNodes != null && puvm.StartNodes.Any()) { Guid[] startIds = puvm.StartNodes.Select(x => x.Id).ToArray(); var nodes = repo.GetPuckRevision().Where(x => startIds.Contains(x.Id) && x.Current).ToList().GroupBy(x => x.Id); if (nodes.Any()) { puvm.StartPaths = string.Join(",", nodes.Select(x => x.First().Path)); } } model.Add(puvm); } return(model); }
public async override Task <ClaimsPrincipal> CreateAsync(PuckUser user) { var principal = await base.CreateAsync(user); if (string.IsNullOrEmpty(user.PuckStartNodeIds)) { return(principal); } var ids = user.PuckStartNodeIds.Split(',', System.StringSplitOptions.RemoveEmptyEntries).Select(x => Guid.Parse(x)); var validIds = repo.GetPuckRevision().Where(x => ids.Contains(x.Id) && x.Current).Select(x => x.Id).Distinct().ToList(); if (validIds.Count == 0) { return(principal); } ((ClaimsIdentity)principal.Identity).AddClaims( validIds .Select(x => new Claim(Claims.PuckStartId, x.ToString())).ToArray() ); return(principal); }
public override async Task ValidatePrincipal(CookieValidatePrincipalContext context) { if (!(cache.Get <bool?>($"renewPuckClaims{context.Principal.Identity.Name}") ?? false)) { await SecurityStampValidator.ValidatePrincipalAsync(context); return; } cache.Remove($"renewPuckClaims{context.Principal.Identity.Name}"); var claims = context.Principal.FindAll(Claims.PuckStartId)?.ToList(); if (claims != null && claims.Any()) { for (var i = 0; i < claims.Count; i++) { ((ClaimsIdentity)context.Principal.Identity).RemoveClaim(claims[i]); } } var user = await userManager.FindByNameAsync(context.Principal.Identity.Name); if (user != null && !string.IsNullOrEmpty(user.PuckStartNodeIds)) { var ids = user.PuckStartNodeIds.Split(',', System.StringSplitOptions.RemoveEmptyEntries).Select(x => Guid.Parse(x)); var validIds = repo.GetPuckRevision().Where(x => ids.Contains(x.Id) && x.Current).Select(x => x.Id).Distinct().ToList(); foreach (var startNodeId in validIds) { ((ClaimsIdentity)context.Principal.Identity).AddClaim(new Claim(Claims.PuckStartId, startNodeId.ToString())); } } context.ReplacePrincipal(context.Principal); context.ShouldRenew = true; await SecurityStampValidator.ValidatePrincipalAsync(context); }
public ActionResult Preview(string path, string variant) { var model = repo.GetPuckRevision().Where(x => x.Current && x.Path.ToLower().Equals(path.ToLower()) && x.Variant.ToLower().Equals(variant.ToLower())).FirstOrDefault(); return(Preview(model)); }