示例#1
0
        public virtual async Task <ActionResult <T> > Add(T collection)
        {
            var model = Representer.ToModel(collection);

            if (model.CollectionId == Guid.Empty)
            {
                model.CollectionId = Guid.NewGuid();
            }

            model.PrincipalId = this.User.GetOid();

            if (string.IsNullOrEmpty(model.Name))
            {
                return(this.BadRequest());
            }

            var added = await Store.StoreCollectionAsync(model).ConfigureAwait(false);

            await RoleStore.StoreRoleAssignmentAsync(new RoleAssignment
            {
                CollectionId = added.CollectionId,
                PrincipalId  = added.PrincipalId,
                Role         = RoleAssignment.Owner
            }).ConfigureAwait(false);

            var area = this.RouteData.Values["area"];

            return(this.CreatedAtRoute($"GetCollection.{area}", new { id = added.CollectionId.ToString("N", CultureInfo.InvariantCulture) }, Representer.ToView(added)));
        }
        public virtual async Task <ActionResult <T> > Replace(Guid collection, Guid user, [FromBody] T roleAssignment)
        {
            var role = await Store.GetRoleAssignment(collection, User.GetOid()).ConfigureAwait(false);

            if (role?.Role != RoleAssignment.Owner)
            {
                return(this.Forbid());
            }

            var model = Representer.ToModel(roleAssignment);

            model.CollectionId = collection;
            model.PrincipalId  = user;

            var added = await Store.StoreRoleAssignmentAsync(model).ConfigureAwait(false);

            return(Representer.ToView(added));
        }