コード例 #1
0
        public async Task <ActionResult <OrganizationView> > CreateOrganizationAsync([FromBody] OrganizationCreateRequest organizationCreateRequest)
        {
            var currentUserId = GetCurrentUserId();

            try
            {
                var createdOrg = await organizationManager.AddAsync(organizationCreateRequest, currentUserId);

                OrganizationView newOrg = await createdOrg
                                          .ProjectTo <OrganizationView>(mapper.ConfigurationProvider)
                                          .SingleAsync();

                return(Ok(newOrg));
            }
            catch (ArgumentNullException ane)
            {
                logger.LogDebug(ane.Message + "\n" + ane.StackTrace);
                logger.LogDebug($"User {currentUserId} doesn't exist in current database");
                return(Forbid(JwtBearerDefaults.AuthenticationScheme, CookieAuthenticationDefaults.AuthenticationScheme));
            }
            catch (ArgumentException ae)
            {
                logger.LogDebug(ae.Message + "\n" + ae.StackTrace);
                logger.LogDebug($"Organization with name '{organizationCreateRequest.Name}' already exists");
                return(BadRequest($"Organization with name '{organizationCreateRequest.Name}' already exists"));
            }
            catch (Exception ex)
            {
                logger.LogDebug(ex.Message + "\n" + ex.StackTrace);
                return(StatusCode(500));
            }
        }
コード例 #2
0
        public async Task <IWrappedResponse> Create(OrganizationCreateRequest request)
        {
            var cmd = ServiceCommand <Organization, Rules.Organization.Create.MainRule>
                      .Create(_serviceProvider)
                      .When(new Rules.Organization.Create.MainRule(request))
                      .Then(CreateAction);

            return(await cmd.Execute());
        }
コード例 #3
0
        public async Task Test_organizations_crud_sequence()
        {
            var initialOrganizations = await _apiClient.Organizations.GetAllAsync(new Paging.PaginationInfo());

            var createRequest = new OrganizationCreateRequest
            {
                Name        = ($"integration-testing-" + MakeRandomName()).ToLower(),
                DisplayName = "Integration testing",
                Branding    = new OrganizationBranding
                {
                    LogoUrl = "https://cdn.auth0.com/manhattan/versions/1.2800.0/assets/./badge.png",
                    Colors  = new BrandingColors
                    {
                        Primary        = "#ff0000",
                        PageBackground = "#00ff00"
                    }
                }
            };
            var createResponse = await _apiClient.Organizations.CreateAsync(createRequest);

            createResponse.Should().NotBeNull();
            createResponse.Name.Should().Be(createRequest.Name);
            createResponse.Branding.LogoUrl.Should().Be(createRequest.Branding.LogoUrl);
            createResponse.Branding.Colors.Primary.Should().Be("#ff0000");
            createResponse.Branding.Colors.PageBackground.Should().Be("#00ff00");

            var updateRequest = new OrganizationUpdateRequest
            {
                DisplayName = $"Integration testing 123",
            };
            var updateResponse = await _apiClient.Organizations.UpdateAsync(createResponse.Id, updateRequest);

            updateResponse.Should().NotBeNull();
            updateResponse.DisplayName.Should().Be(updateRequest.DisplayName);

            var organization = await _apiClient.Organizations.GetAsync(createResponse.Id);

            organization.Should().NotBeNull();
            organization.DisplayName.Should().Be(updateResponse.DisplayName);

            var organizationByName = await _apiClient.Organizations.GetByNameAsync(organization.Name);

            organizationByName.Should().NotBeNull();
            organizationByName.DisplayName.Should().Be(updateResponse.DisplayName);

            var organizations = await _apiClient.Organizations.GetAllAsync(new Paging.PaginationInfo());

            organizations.Count.Should().Be(initialOrganizations.Count + 1);

            await _apiClient.Organizations.DeleteAsync(updateResponse.Id);

            Func <Task> getFunc = async() => await _apiClient.Organizations.GetAsync(organization.Id);

            getFunc.Should().Throw <ErrorApiException>().And.Message.Should().Be("No organization found by that id or name");
        }
コード例 #4
0
        public async Task <IQueryable <Organization> > AddAsync(OrganizationCreateRequest organizationCreateRequest, Guid creatorId)
        {
            bool exist = await Organizations
                         .Where(org => org.Name == organizationCreateRequest.Name)
                         .AnyAsync();

            if (exist)
            {
                throw new ArgumentException();
            }

            var creator = await userManager.FindByIdAsync(creatorId.ToString())
                          ?? throw new ArgumentNullException("Can't find creator");

            var newOrg = mapper.Map <Organization>(organizationCreateRequest);

            newOrg.Users = new List <UserRightsInOrganization>();

            logger.LogDebug("Start adding creator to all roles");
            foreach (var right in OrganizationRights)
            {
                if (right.RightName == Configure.OrganizationRights.Wisher.ToString())
                {
                    continue;
                }
                newOrg.Users.Add(new UserRightsInOrganization
                {
                    UserId = creator.Id,
                    User   = creator,
                    OrganizationRightId   = right.Id,
                    UserOrganizationRight = right,
                    OrganizationId        = newOrg.Id,
                    Organization          = newOrg
                });
            }
            logger.LogDebug("End adding creator to all roles");

            newOrg.Ads = new List <Ad>();

            await dbContext.Organizations.AddAsync(newOrg);

            logger.LogDebug("Added new organization");

            await dbContext.SaveChangesAsync();

            logger.LogDebug("Save all changes");

            return(dbContext.Organizations
                   .Where(org => org.Id == newOrg.Id));
        }
コード例 #5
0
ファイル: OrganizationTests.cs プロジェクト: Hawxy/auth0.net
        public async Task Test_organizations_checkpoint_pagination()
        {
            var organization1 = new OrganizationCreateRequest
            {
                Name        = ($"integration-testing-" + MakeRandomName()).ToLower(),
                DisplayName = "Integration testing",
                Branding    = new OrganizationBranding
                {
                    LogoUrl = "https://cdn.auth0.com/manhattan/versions/1.2800.0/assets/./badge.png",
                    Colors  = new BrandingColors
                    {
                        Primary        = "#ff0000",
                        PageBackground = "#00ff00"
                    }
                }
            };
            var createResponse1 = await _apiClient.Organizations.CreateAsync(organization1);

            var organization2 = new OrganizationCreateRequest
            {
                Name        = ($"integration-testing-" + MakeRandomName()).ToLower(),
                DisplayName = "Integration testing",
                Branding    = new OrganizationBranding
                {
                    LogoUrl = "https://cdn.auth0.com/manhattan/versions/1.2800.0/assets/./badge.png",
                    Colors  = new BrandingColors
                    {
                        Primary        = "#ff0000",
                        PageBackground = "#00ff00"
                    }
                }
            };
            var createResponse2 = await _apiClient.Organizations.CreateAsync(organization2);

            var firstCheckPointPaginationRequest = await _apiClient.Organizations.GetAllAsync(new Paging.CheckpointPaginationInfo(1));

            var secondCheckPointPaginationRequest = await _apiClient.Organizations.GetAllAsync(new Paging.CheckpointPaginationInfo(1, firstCheckPointPaginationRequest.Paging.Next));

            secondCheckPointPaginationRequest.Count.Should().Be(1);
            secondCheckPointPaginationRequest.Paging.Next.Should().NotBeNullOrEmpty();

            await _apiClient.Organizations.DeleteAsync(createResponse1.Id);

            await _apiClient.Organizations.DeleteAsync(createResponse2.Id);
        }
コード例 #6
0
        public async Task <Organization> CreateAsync(Organization organization)
        {
            using (_loggerScope(_logger, $"PostAsync"))
                using (var client = _apiClient.CreateClient())
                {
                    var request  = new OrganizationCreateRequest(organization);
                    var response = await client.PostAsJsonAsync(ResourceUri, request).ConfigureAwait(false);

                    if (response.StatusCode != System.Net.HttpStatusCode.Created)
                    {
                        throw new HttpRequestException(
                                  $"Status code retrieved was {response.StatusCode} and not a 201 as expected" +
                                  Environment.NewLine +
                                  "See: https://developer.zendesk.com/rest_api/docs/core/organizations#create-organization");
                    }

                    var result = await response.Content.ReadAsAsync <OrganizationResponse>();

                    return(result.Organization);
                }
        }
コード例 #7
0
        public async Task <IActionResult> Create([FromBody] OrganizationCreateRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new OrganizationCreateResponse(Resource.InvalidPayload, false)));
            }

            //Найти юзера по авторизац.токену. claimsPrincipal.Identity тут не помог (там визуально ничего нет)
            var user = await UserFromClaim.GetUser(_UserManager, HttpContext.User);

            if (user == null)
            {
                return(BadRequest(new OrganizationCreateResponse(Resource.InvalidLoginRequest, false)));
            }

            if (!user.EmailConfirmed)
            {
                return(BadRequest(new OrganizationCreateResponse(Resource.EmailNotConfirmed, false)));
            }

            //Если пользователь состоит в организации создавать новую нельзя. Чтобы создать,
            //нужно вначале покинуть организацию. Если он создает, то автоматом становится ее членом.
            if (!string.IsNullOrEmpty(user.OrganizationUID))
            {
                return(BadRequest(new OrganizationCreateResponse(Resource.UserIsMemberOfOrganization, false)));
            }

            var org = await _OrganizationStore.Create(request.Name, request.FullName, user.UID);

            //также нужно прописать в юзера в свойство что он уже создал организацию...
            //TODO@: плохо с транзакционностью - можно создать организацию, но упасть на изменении юзера (не пропишется ему свойство)

            await _UserStoreEx.SetUserOrganizationAsync(user, org.UID);

            return(Ok(new OrganizationCreateResponse()
            {
                Success = true,
                UID = org.UID
            }));
        }
コード例 #8
0
 /// <summary>
 /// Creates a new organization.
 /// </summary>
 /// <param name="request">The <see cref="OrganizationCreateRequest"/> containing the properties of the new organization.</param>
 /// <returns>The new <see cref="Organization"/> that has been created.</returns>
 public Task <Organization> CreateAsync(OrganizationCreateRequest request)
 {
     return(Connection.SendAsync <Organization>(HttpMethod.Post, BuildUri("organizations"), request, DefaultHeaders));
 }
コード例 #9
0
 public MainRule(OrganizationCreateRequest request, IRule parentRule = null)
 {
     // Create Context
     Context    = new ContextModel(request, this);
     ParentRule = parentRule;
 }
コード例 #10
0
        /// <summary>
        /// 机构账号创建
        /// </summary>
        public async Task <ApiResult <OrganizationCreateResponse> > OrganizationCreate(OrganizationCreateRequest request)
        {
            var result = await Http.PostAsync <
                OrganizationCreateResponse,
                OrganizationCreateRequest>(
                $"{Option.BaseUrl}/v1/organizations/createByThirdPartyUserId",
                request
                );

            return(result);
        }
コード例 #11
0
 public async Task <ActionResult <Organization> > Post([FromBody] OrganizationCreateRequest request)
 {
     return(await _organizationsService.Create(request).Convert <Organization>(this));
 }