+1-888-365-2779
Try Now
More in this section

Forums / Sitefinity SDK / Create Event Permissions

Create Event Permissions

5 posts, 0 answered
  1. Geoff
    Geoff avatar
    89 posts
    Registered:
    02 Mar 2011
    12 Apr 2011
    Link to this post
    I have created a new user and a new role.  The user is assigned to this role and the role has been given all permissions under Events -> General:
    View event
    Create event
    Modify event
    Delete event
    Change event owner
    Change event permissions

    Whenever I attempt to create an event using the fluent API, I get the following error:
    You are not authorized to 'Create {0}' ('General').

    The code to create an event using the fluent API works correctly when using an admin user, but not when using this user.  I would assume the role would only need permission to "Create event", but this is not the case.  What permissions do I need to modify to allow this user to successfully create an event through the API?

    Thanks.
  2. Victor Velev
    Victor Velev avatar
    1345 posts
    Registered:
    06 Jul 2015
    15 Apr 2011
    Link to this post
    Hi Geoff,

    Can you share the code of your widget so we can have a look at it locally and provide you with helpful solution. 

    Regards,
    Victor Velev
    the Telerik team

    Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get now >>

  3. Geoff
    Geoff avatar
    89 posts
    Registered:
    02 Mar 2011
    15 Apr 2011
    Link to this post
    Thank you for looking into this, Victor.  Here is the code in my widget that creates the event and submits it to the simple workflow.  Again, this code functions under admin users, but not under my new user/role.

    private void CreateNewEvent()
    {
        Guid eventID = Guid.Empty;
     
        App.WorkWith().Event().CreateNew().Do(calEvent =>
            {
                eventID = calEvent.Id;
     
                // Name
                calEvent.Title = txtEventName.Text;
                calEvent.Description = txtDescription.Text;
     
                /* assign additional properties... etc... */
            })
            .SaveChanges();
     
        if (eventID != Guid.Empty)
            SubmitEventToWorkflow(eventID);
    }
     
    private void SubmitEventToWorkflow(Guid eventID)
    {
        var eventItem = App.WorkWith().Event(eventID).Get();
        var masterId = eventItem.OriginalContentId;
         
        EventsManager.GetManager().RecompileItemUrls<Event>(eventItem);
        if (eventItem.Status == ContentLifecycleStatus.Master)
        {
            EventsManager.GetManager().CheckOut(eventItem);
            masterId = eventItem.Id;
        }
     
        EventsManager.GetManager().SaveChanges();
     
        var contextBag = new Dictionary<stringstring>();
        contextBag.Add("ContentType", eventItem.GetType().FullName);
     
        WorkflowManager.MessageWorkflow(
                     masterId,
                     eventItem.GetType(),
                     EventsManager.GetDefaultProviderName(),
                     "SendForApproval",
                     false,
                     contextBag);
    }

    Thanks.
  4. Victor Velev
    Victor Velev avatar
    1345 posts
    Registered:
    06 Jul 2015
    21 Apr 2011
    Link to this post
    Hi Geoff,

    Can you try and test with the following code which should grant all users permissions to create events:

       EventsManager manager = EventsManager.GetManager();
        manager.BreakPermiossionsInheritance(eventItem);
     
        var roleId = SecurityManager.ApplicationRoles["Everyone"].Id;
        Telerik.Sitefinity.Security.Model.Permission permissionForEveryone = eventItem.GetActivePermissions().Where(p => p.PrincipalId == roleId && p.ObjectId == eventItem.Id).FirstOrDefault();
        if (permissionForEveryone == null)
        {
            permissionForEveryone = manager.CreatePermission(SecurityConstants.Sets.General.Create, eventItem.Id, roleId);
            eventItem.Permissions.Add(permissionForEveryone);
        }
        permissionForEveryone.GrantActions(true, SecurityConstants.Sets.General.View);
        manager.SaveChanges();
    }

    If the above sample does not help you, can you pack your custom widget ( including all widget files ) and send it to me so I can have a deeper look.

    All the best,
    Victor Velev
    the Telerik team

    Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get now >>

  5. Geoff
    Geoff avatar
    89 posts
    Registered:
    02 Mar 2011
    21 Apr 2011
    Link to this post
    Thank you for your help, Victor.  From what I can tell, setting the permissions listed in the OP work correctly in Sitefinity 4.1, so upgrading took care of the issue.

    Thanks.
5 posts, 0 answered