public async Task <IHttpActionResult> PostAsync([FromBody] CreatePortalDto model, CancellationToken cancellationToken) { if (model == null || !ModelState.IsValid) { return(BadRequest()); } var user = await _userManager.FindByEmailAsync(User.Identity.Name, cancellationToken); if (user == null) { return(NotFound()); } var portal = new PortalItem { Uri = model.Uri, Name = model.Name, Description = model.Description, GATrackingId = model.GATrackingId }; var validationResult = await _portalManager.CreateAsync(portal, new[] { new AccessRuleItem { User = null, Permission = AccessPermission.CanView, Visibility = AccessVisibility.Public }, new AccessRuleItem { User = user, Permission = AccessPermission.IsOwner } }, model.Template, cancellationToken); if (!validationResult.Succeeded) { return(this.ValidationContent(validationResult)); } if (model.Project != null) { await ApiSecurity.AuthorizeAsync(AccessObjectType.Project, model.Project.Id, AccessPermission.IsOwner, cancellationToken); await _portalManager.SetProjectAsync(portal, model.Project, cancellationToken); } return(CreatedAtRoute("Portals.GetByUri", new RouteValueDictionary { { "uri", portal.Uri } }, ModelMapper.ToPortalDto(portal))); }