Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
    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);
    }
Ejemplo n.º 6
0
        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));
        }