Apicurio-studio: рдкрд░реНрдпрд╛рд╡рд░рдг рд╕рдВрд╕реНрдХрд░рдг "APICURIO_SHARE_FOR_EVERYONE" рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рд╕рд┐рддре░ 2019  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Apicurio/apicurio-studio

рдирдорд╕реНрддреЗ!
рдореИрдВ рдкрд░реНрдпрд╛рд╡рд░рдг var APICURIO_SHARE_FOR_EVERYONE рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдореИрдВ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдПрдкреАрдЖрдИ рджреЗрдЦ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ " рд╕рд╣рдпреЛрдЧреА " рдпрд╛ " рдореЙрдХреНрд╕ " рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдХрд╛рд░рдг рдЦреЛрдЬрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╕реЗрд╡рд╛ "getMocks" рд╕рдВрдкрддреНрддрд┐ "isShareForEveryone ()" рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рдФрд░ 404 HTTP рддреНрд░реБрдЯрд┐ рд╕реИрдЯрд╕ рд▓реМрдЯрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдЕрдиреБрдорддрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВред "рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ" рдЕрдиреБрднрд╛рдЧ рдХреЗ рд▓рд┐рдП рд╡рд╣реАред

ApicurioError

https://github.com/Apicurio/apicurio-studio/blob/master/front-end/studio/src/app/services/apis.service.ts

this.endpoint("/designs/:designId/mocks",

```

public getMocks(apiId: string, from?: number, to?: number): Promise рдХрдВрд╕реЛрд▓.рдЗрдиреНрдлреЛ ("[рдПрдкрд┐рд╕ рд╕рд░реНрд╡рд┐рд╕] рдПрдкреАрдЖрдИ% s рдХреЗ рд▓рд┐рдП рд╕рднреА рдореЙрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛", apiId);

    let getMocksUrl: string = this.endpoint("/designs/:designId/mocks", {
        designId: apiId
    }, {
        start: from,
        end: to
    });

    let options: any = this.options({ "Accept": "application/json" });

    console.info("[ApisService] Fetching API mocks: %s", getMocksUrl);
    return this.httpGet<ApiMock[]>(getMocksUrl, options);
}

> this.endpoint("/designs/:designId/collaborators",

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ getCollaborators(apiId: string): Promise рдХрдВрд╕реЛрд▓.рдЗрдиреНрдлреЛ ("[рдПрдкрд┐рд╕ рд╕рд░реНрд╡рд┐рд╕] рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╝рд╛рдЗрди% s рдХреЗ рд▓рд┐рдП рд╕рд╣рдпреЛрдЧреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛", apiId);

    let getCollaboratorsUrl: string = this.endpoint("/designs/:designId/collaborators", {
        designId: apiId
    });
    let options: any = this.options({ "Accept": "application/json" });

    console.info("[ApisService] Fetching collaborator list: %s", getCollaboratorsUrl);
    return this.httpGet<ApiCollaborator[]>(getCollaboratorsUrl, options);
}

**https://github.com/Apicurio/apicurio-studio/blob/master/back-end/hub-api/src/main/java/io/apicurio/hub/api/rest/impl/DesignsResource.java**

> !this.storage.hasWritePermission

@ рдУрд╡рд░рд░рд╛рдЗрдб
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрдЧреНрд░рд╣getMocks (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдбрд┐рдЬрд╛рдЗрди рдЖрдИрдбреА, рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рд╛рд░рдВрдн, рдкреВрд░реНрдгрд╛рдВрдХ рдЕрдВрдд)
рд╕рд░реНрд╡рд░ рдПрд░рд░ рдлреЗрдВрдХрддрд╛ рд╣реИ, рдиреЙрдЯрдлрд╛рдЙрдВрдб рдЕрдкрд╡рд╛рдж {
рдЗрдВрдЯ = 0 рд╕реЗ;
рдЗрдВрдЯ рд╕реЗ = 20;
рдЕрдЧрд░ (рд╢реБрд░реВ! = рд╢реВрдиреНрдп) {
рд╕реЗ = start.intValue ();
}
рдЕрдЧрд░ (рдЕрдВрдд! = рд╢реВрдиреНрдп) {
to = end.intValue ();
}

    try {
        String user = this.security.getCurrentUser().getLogin();
        if (!this.storage.hasWritePermission(user, designId)) {
            throw new NotFoundException();
        }
        return this.storage.listApiDesignMocks(designId, from, to);
    } catch (StorageException e) {
        throw new ServerError(e);
    }
}

@ рдУрд╡рд░рд░рд╛рдЗрдб
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрдЧреНрд░рд╣getCollaborators(String designId) рд╕рд░реНрд╡рд░ рдПрд░рд░ рдлреЗрдВрдХрддрд╛ рд╣реИ, NotFoundException {
logger.debug ("рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛: {}", designId);
metrics.apiCall("/designs/{designId}/collaborators", "GET");

    try {
        String user = this.security.getCurrentUser().getLogin();
        if (!this.storage.hasWritePermission(user, designId)) {
            throw new NotFoundException();
        }
        return this.storage.listPermissions(designId);
    } catch (StorageException e) {
        throw new ServerError(e);
    }
}

```

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдирдорд╕реНрддреЗ! рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдмрдЧ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ, рдореБрдЭреЗ рдЕрднреА рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдо рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рдереЗред 0.2.27.
рдЙрд╕рдХреЗ рд▓рд┐рдП рдорд╛рдлрд╝ рдХрд░рдирд╛ред
рдореИрдВ рдРрдк рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛ред
рдЖрдк рддреНрд░реБрдЯрд┐ рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдзрдиреНрдпрд╡рд╛рджред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

@AguRyan рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬ рдкрд░, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ hasWritePermission() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░, isShareForEveryone() рдЪреЗрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

https://github.com/Apicurio/apicurio-studio/blob/v0.2.43.Final/back-end/hub-core/src/main/java/io/apicurio/hub/core/storage/jdbc/JdbcStorageред рдЬрд╛рд╡рд╛#L275

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░ рд╣реИ?

рдирдорд╕реНрддреЗ! рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдмрдЧ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ, рдореБрдЭреЗ рдЕрднреА рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдо рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рдереЗред 0.2.27.
рдЙрд╕рдХреЗ рд▓рд┐рдП рдорд╛рдлрд╝ рдХрд░рдирд╛ред
рдореИрдВ рдРрдк рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛ред
рдЖрдк рддреНрд░реБрдЯрд┐ рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

EricWittmann picture EricWittmann  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zigouras picture zigouras  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

null-dev picture null-dev  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ablaas-ald picture ablaas-ald  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

yuanhuiliu picture yuanhuiliu  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ