Skip to content
This repository has been archived by the owner on Aug 20, 2021. It is now read-only.

Commit

Permalink
Merge.1.to.3 (#1012)
Browse files Browse the repository at this point in the history
* chore(): Prepare next version

* fix(audits): add api events

fix gravitee-io/issues#2883

* chore(): Prepare next version

* fix: Platform dashboard rights not correctly handled for widget response status

fix gravitee-io/issues#2868

* fix: When deleting an API, its pages should be also deleted

fix gravitee-io/issues#2844

* fix(swagger): Add documentation for analytics API

Closes gravitee-io/issues#2914

* fix(group): A group can be associated to existing APIs and or Apps

Closes gravitee-io/issues#2253

* fix(view): Do not update view's picture when re-ordering

Closes gravitee-io/issues#2909

* feat(services): Add a user-agent header for all services requests

fix gravitee-io/issues#2854

* fix(api): add controls on api creation and update

fix gravitee-io/issues#2938

* release(1.25.16)

* chore(): Prepare next version

* chore: Update node dependency

Closes gravitee-io/issues#2963

* fix(prometheus): register HC service only on Prometheus

fix gravitee-io/issues#2979

* fix(oauth): log user mapping error in warning

fix gravitee-io/issues#2973

* fix(quality-rules): do not require read access to get all quality rules

fix gravitee-io/issues#2984

* fix(analytics): Do not handle API and application with value '1' as deleted.

Closes gravitee-io/issues#2987

* feat(http): Add support for PKCS12 for HTTP server

Closes gravitee-io/issues#2978

* fix(analytics): replace '1' to '?' in analytics response

fix gravitee-io/issues#2988

* release(1.25.17)

* chore(): Prepare next version

* fix: Do not log message when a field is not mapped on an identity provider

Closes gravitee-io/issues#3016

* fix(email): do not throw error if email is disabled

fix gravitee-io/issues#3035

* doc: Add doc on how to add email on a user inmemory

Closes gravitee-io/issues#2590

* fix(email): do not send email if no recipient

fix gravitee-io/issues#3038

* release(1.30.1)

* chore(): Prepare next version

* fix(gravitee.bat): wrong comment syntax

fix gravitee-io/issues#3050

* feat(metadata): add EL support for the "email-support" API metadata

closes gravitee-io/issues#3049

* fix(api): delete memberships and notifications on delete

fix gravitee-io/issues#2711

* fix(ut): ApiService_DeleteTest ApplicationService_ArchiveTest

* release(1.25.18)

* chore(): Prepare next version

* fix(management): the enums not case-insensitive when an api is imported

Closes gravitee-io/issues#2995

* fix(logs): escape reserved words during research

fix gravitee-io/issues#3070

* release(1.25.19)

* chore(): Prepare next version

* release(1.30.2)

* chore(): Prepare next version

* release(1.25.20)

* chore(): Prepare next version

* fix: The configuration of an email on a user (in memory) does not work

Closes gravitee-io/issues#3103

* fix: Error trying to import API with primary owner without email

Closes gravitee-io/issues#3104

* fix(configuration): define sensitive data that cannot be seen outside the service

fix gravitee-io/issues#3082

* feat(application): display complete request URI in the application log detail

closes gravitee-io/issues#3107

* feat(maintenance): add a maintenance mode for the ui and api

fix gravitee-io/issues#3124

* fix(subscription): update subscription ending date

fix gravitee-io/issues#3149

* fix(apikey): expire date cannot ended after subscription

fix gravitee-io/issues#3153

* fix(management) API documentation import preserves folders structure

Fixes gravitee-io/issues#3129

* release(1.25.21)

* chore(): Prepare next version

* fix(pages) allow non admin to administrate portal pages

fix gravitee-io/issues#3174

* fix(analytics): report issues#3113 in default widgets

* release(1.30.3)

* chore(): Prepare next version

* fix(config): Bad defautl value for HTTP proxy

Closes gravitee-io/issues#3221

* fix(group): Reverse newly created entity and mapped entity

Closes gravitee-io/issues#3171

* feat(instance): Add instances filtering capabilities to avoid loading large set of data

Closes gravitee-io/issues#3222

* fix: Missing informations on email template for expired api-key

* fix(oauth): Add a state while doing oauth authentication

Closes gravitee-io/issues#3231

* fix(permission): Group permissions are merged with user permissions

Closes gravitee-io/issues#3238

* fix: Cors request considered as "Deleted Application"

Closes gravitee-io/issues#3228

* fix: Log unknown path for unknown APIs

Closes gravitee-io/issues#3195

* fix(container): Move JUL logs to SLF4j

Closes gravitee-io/issues#3229

* feat(idp): add firstname and lastname support for inmemory users

closes gravitee-io/issues#3234

* feat(user): Add a flag to indicate that the user is PO

Closes gravitee-io/issues#2425

* release(1.25.22)

* chore(): Prepare next version

* feat(swagger): Set server URLs depending on the entrypoints of the API

Closes gravitee-io/issues#3246

* release(1.30.4)

* chore(): Prepare next version

* Fix typo on configuration of proxy type

* fix: fail to parse Swagger page with dynamic freemarker values

Closes gravitee-io/issues#3259

* feat(logs): Provide a way to consult API logs from platform dashboard

Closes gravitee-io/issues#3233

* release(1.30.5)

* chore(): Prepare next version

* fix: Some users are wrongly flagged as primary owners

Closes gravitee-io/issues#3273

* fix(application): do not log in error a missing PO on a archived app

fix gravitee-io/issues#3273

* fix: Manual unlocking of detailed logging limitation

Closes gravitee-io/issues#3282

* fix: Use the correct log lever for errors on token exchange

Closes gravitee-io/issues#3267

* feat(swagger): Servers in descriptor are based on API entrypoints

Closes gravitee-io/issues#3277

* fix: Direct members permissions are not well merged with group permissions

Closes gravitee-io/issues#3315

* fix(): improve the rest-api swagger documentation

fix gravitee-io/issues#3230

* fix(users): display name show 'null' value if firstname or lastname is null

fixes gravitee-io/issues#3313

* fix(api): export API metadata

fixes gravitee-io/issues#3314

* fix(doc): remove List example in the rest-api swagger definition

* chore: Resolve swagger model type

* chore: Remove swagger2markup as it is covered with Redoc

* release(1.25.23)

* chore(): Prepare next version

* fix(api): Quality score is set to 0 if no custom rules has been validated

Closes gravitee-io/issues#3325

* fix(application): Set the client_id when updating a DCR application

Closes gravitee-io/issues#3180

* feat(dictionary): Provide support HTTP headers

Closes gravitee-io/issues#3296

* fix: When updating the view name, the label is not correct on the API's cards

fix gravitee-io/issues#3279

* feat(policy): Policies can be extracted from Swagger

Closes gravitee-io/issues#3298

* feat(alert): Add alert history

Closes gravitee-io/issues#3185

* fix(pages): do not override fetcher configuration while fetching pages

fixes gravitee-io/issues#3342

* feat(alert): Upgrade node dependencies to add support for alert on node healthcheck metrics

Closes gravitee-io/issues#3118

* fix(api): Add default context-path to API entity

Closes gravitee-io/issues#3356

* fix(analytics): add order metadata to group_by response to be able to sort data on the UI side

fixes gravitee-io/issues#3350

* feat(page): Add an option to render swagger server according to the entrypoint path

Closes gravitee-io/issues#3359

* fix(logs): Manage unknown API

Closes gravitee-io/issues#3349

* fix: missing license header

* fix(subscription): Api-key without expiration date are well managed

Closes gravitee-io/issues#3362

* release(1.30.6)

* chore(): Prepare next version

* release(1.30.7)

* chore(): Prepare next version

* fix: Support email message is displaying html elements

Closes gravitee-io/issues#3398

* fix(logging): Plug Java Util Logging (JUL) to SLF4J

Closes gravitee-io/issues#3360

* release(1.25.24)

* fix: Metadata are not well imported while creating or updating an API

Closes gravitee-io/issues#3409

* fix: Entrypoints are incorrect in case of virtual hosting configuration

Closes gravitee-io/issues#3404

* fix: Error on top path column name

fix gravitee-io/issues#3411

* release(1.30.8)

* chore(): Prepare next version

* fix(apikey): save paused subscriptions

fix gravitee-io/issues#3520

* fix(swagger): keep the swagger config on api update from swagger

fix gravitee-io/issues#3518

* fix(user): do not fail if default app is enabled but simple App with DCR is disabled

fix gravitee-io/issues#3523

* fix(subscriptions): search subscriptions by api-key with many applications

fixes gravitee-io/issues#3346

* fix(oidc-idp): map emailRequired property from gravitee.yml file

fixes gravitee-io/issues#3597

* fix: Allows to override virtual host with entrypoints

fix gravitee-io/issues#3626

* feat(memberhsip): Manage automatic membership mappings for identity providers

Closes gravitee-io/issues#1698

* fix(view): Default ALL view must have a key

Closes gravitee-io/issues#3636

* fix(UT): SubscriptionService + ApiService_ExportAsJsonTest

* chore(): upgrade parent to fix gpg error

* release(1.30.9)

Co-authored-by: Gravitee.io Bot <contact@gravitee.io>
Co-authored-by: Azize Elamrani <azize.elamrani@gmail.com>
Co-authored-by: David BRASSELY <brasseld@gmail.com>
Co-authored-by: Titouan COMPIEGNE <titouan.compiegne@gmail.com>
Co-authored-by: Guillaume Gillon <guillaume.gillon@gmail.com>
Co-authored-by: Florent CHAMFROY <florent.chamfroy@graviteesource.com>
Co-authored-by: RomsDev <tabaryr@gmail.com>
  • Loading branch information
8 people committed May 6, 2020
1 parent 5af5104 commit 971d6fe
Show file tree
Hide file tree
Showing 256 changed files with 8,248 additions and 2,655 deletions.
Expand Up @@ -120,10 +120,14 @@ public String getLastname() {
public String getDisplayName() {
String displayName;

if (firstname != null || lastname != null) {
displayName = firstname + ' ' + lastname;
if ((firstname != null && !firstname.isEmpty()) || (lastname != null && !lastname.isEmpty())) {
if (firstname != null && !firstname.isEmpty()) {
displayName = firstname + ((lastname != null && !lastname.isEmpty()) ? ' ' + lastname : "");
} else {
displayName = lastname;
}
} else {
if (email != null && !"memory".equals(source)){
if (email != null && !email.isEmpty() && !"memory".equals(source)){
displayName = email;
} else {
displayName = sourceId;
Expand Down
@@ -0,0 +1,110 @@
/**
* Copyright (C) 2015 The Gravitee team (http://gravitee.io)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.gravitee.rest.api.idp.api.authentication;

import org.junit.Assert;
import org.junit.Test;

import java.util.Collections;

/**
* @author Titouan COMPIEGNE (titouan.compiegne at graviteesource.com)
* @author GraviteeSource Team
*/
public class UserDetailsTest {

@Test
public void shouldDisplayName_lastname_null() {
UserDetails userDetails = new UserDetails("username", "", Collections.emptyList());
userDetails.setFirstname("user");
userDetails.setLastname(null);
userDetails.setEmail(null);

Assert.assertEquals("user", userDetails.getDisplayName());
}

@Test
public void shouldDisplayName_lastname_empty() {
UserDetails userDetails = new UserDetails("username", "", Collections.emptyList());
userDetails.setFirstname("user");
userDetails.setLastname("");
userDetails.setEmail(null);

Assert.assertEquals("user", userDetails.getDisplayName());
}

@Test
public void shouldDisplayName_firstname_null() {
UserDetails userDetails = new UserDetails("username", "", Collections.emptyList());
userDetails.setFirstname(null);
userDetails.setLastname("lastname");
userDetails.setEmail(null);

Assert.assertEquals("lastname", userDetails.getDisplayName());
}

@Test
public void shouldDisplayName_firstname_empty() {
UserDetails userDetails = new UserDetails("username", "", Collections.emptyList());
userDetails.setFirstname("");
userDetails.setLastname("lastname");
userDetails.setEmail(null);

Assert.assertEquals("lastname", userDetails.getDisplayName());
}

@Test
public void shouldDisplayName_firstname_lastname_null() {
UserDetails userDetails = new UserDetails("username", "", Collections.emptyList());
userDetails.setFirstname(null);
userDetails.setLastname(null);
userDetails.setEmail("test@test.com");

Assert.assertEquals("test@test.com", userDetails.getDisplayName());
}

@Test
public void shouldDisplayName_firstname_lastname_empty() {
UserDetails userDetails = new UserDetails("username", "", Collections.emptyList());
userDetails.setFirstname("");
userDetails.setLastname("");
userDetails.setEmail("test@test.com");

Assert.assertEquals("test@test.com", userDetails.getDisplayName());
}

@Test
public void shouldDisplayName_email_null() {
UserDetails userDetails = new UserDetails("username", "", Collections.emptyList());
userDetails.setFirstname(null);
userDetails.setLastname(null);
userDetails.setEmail(null);
userDetails.setSourceId("username");

Assert.assertEquals("username", userDetails.getDisplayName());
}

@Test
public void shouldDisplayName_email_empty() {
UserDetails userDetails = new UserDetails("username", "", Collections.emptyList());
userDetails.setFirstname("");
userDetails.setLastname("");
userDetails.setEmail("");
userDetails.setSourceId("username");

Assert.assertEquals("username", userDetails.getDisplayName());
}
}
Expand Up @@ -71,6 +71,8 @@ public class InMemoryAuthentificationProvider extends AbstractUserDetailsAuthent

if (found) {
String username = environment.getProperty("users[" + userIdx + "].username");
String firstname = environment.getProperty("users[" + userIdx + "].firstname");
String lastname = environment.getProperty("users[" + userIdx + "].lastname");
String password = environment.getProperty("users[" + userIdx + "].password");
String email = environment.getProperty("users[" + userIdx + "].email");
String roles = environment.getProperty("users[" + userIdx + "].roles");
Expand All @@ -81,6 +83,8 @@ public class InMemoryAuthentificationProvider extends AbstractUserDetailsAuthent

newUser.setSource(InMemoryIdentityProvider.PROVIDER_TYPE);
newUser.setSourceId(username);
newUser.setFirstname(firstname);
newUser.setLastname(lastname);
LOGGER.debug("Add an in-memory user: {}", newUser);
userDetailsService.createUser(newUser);
}
Expand Down
Expand Up @@ -114,6 +114,8 @@ public UserDetails loadUserByUsername(String username)
UserDetails userDetails = new UserDetails(user.getUsername(), user.getPassword(), user.getEmail(), user.getAuthorities());
userDetails.setSource(InMemoryIdentityProvider.PROVIDER_TYPE);
userDetails.setSourceId(user.getUsername());
userDetails.setFirstname(user.getFirstname());
userDetails.setLastname(user.getLastname());

return userDetails;
}
Expand All @@ -130,7 +132,12 @@ private UserDetails convert(org.springframework.security.core.userdetails.UserDe
UserDetails userDetails = new UserDetails(user.getUsername(), user.getPassword(), user.getAuthorities());
userDetails.setSource(InMemoryIdentityProvider.PROVIDER_TYPE);
userDetails.setSourceId(user.getUsername());


if (user instanceof io.gravitee.rest.api.idp.api.authentication.UserDetails) {
userDetails.setFirstname(((io.gravitee.rest.api.idp.api.authentication.UserDetails) user).getFirstname());
userDetails.setLastname(((io.gravitee.rest.api.idp.api.authentication.UserDetails) user).getLastname());
}

return userDetails;
}
}
Expand Up @@ -90,6 +90,8 @@ public void afterPropertiesSet() throws Exception {
String username = environment.getProperty("users[" + userIdx + "].username");
String password = environment.getProperty("users[" + userIdx + "].password");
String email = environment.getProperty("users[" + userIdx + "].email");
String firstname = environment.getProperty("users[" + userIdx + "].firstname");
String lastname = environment.getProperty("users[" + userIdx + "].lastname");
String roles = environment.getProperty("users[" + userIdx + "].roles");
List<GrantedAuthority> authorities = AuthorityUtils.commaSeparatedStringToAuthorityList(roles);
userIdx++;
Expand All @@ -98,6 +100,8 @@ public void afterPropertiesSet() throws Exception {

newUser.setSource(InMemoryIdentityProvider.PROVIDER_TYPE);
newUser.setSourceId(username);
newUser.setFirstname(firstname);
newUser.setLastname(lastname);
userDetailsService.createUser(newUser);
}
}
Expand All @@ -122,6 +126,8 @@ private User convert(UserDetails userDetails) {

InMemoryUser user = new InMemoryUser(userDetails.getUsername());
user.setEmail(userDetails.getEmail());
user.setFirstname(userDetails.getFirstname());
user.setLastname(userDetails.getLastname());
return user;
}

Expand Down
147 changes: 0 additions & 147 deletions gravitee-rest-api-management/gravitee-rest-api-management-rest/pom.xml
Expand Up @@ -30,153 +30,6 @@
<packaging>jar</packaging>
<name>Gravitee.io Rest APIs - Management - Rest API</name>

<properties>
<swagger2markup.version>1.0.1</swagger2markup.version>
<swagger2markup.plugin.version>1.0.1</swagger2markup.plugin.version>
<swagger2markup.extension.version>1.0.0</swagger2markup.extension.version>

<asciidoctorj.version>1.5.4</asciidoctorj.version>
<jruby.version>1.7.21</jruby.version>

<swagger.input>${project.basedir}/src/docs/swagger/swagger_petstore.yaml</swagger.input>
<asciidoctor.input.directory>${project.basedir}/src/adoc</asciidoctor.input.directory>
<generated.asciidoc.directory>${project.build.directory}/asciidoc</generated.asciidoc.directory>
<asciidoctor.html.output.directory>${project.build.directory}/asciidoc/html</asciidoctor.html.output.directory>
<asciidoctor.pdf.output.directory>${project.build.directory}/asciidoc/pdf</asciidoctor.pdf.output.directory>
</properties>

<build>
<plugins>
<plugin>
<groupId>com.github.kongchen</groupId>
<artifactId>swagger-maven-plugin</artifactId>
<version>3.1.3</version>
<configuration>
<apiSources>
<apiSource>
<springmvc>false</springmvc>
<locations>io.gravitee.rest.api.management.rest.resource</locations>
<info>
<title>Gravitee.io - Rest API</title>
<version>${project.version}</version>
<description>This is description of the Gravitee Rest API</description>
<contact>
<email>contact@graviteesource.com</email>
<name>GraviteeSource</name>
<url>https://graviteesource.com</url>
</contact>
<license>
<url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
<name>Apache 2.0</name>
</license>
</info>
<swaggerDirectory>${project.build.directory}/generated/descriptor/</swaggerDirectory>
</apiSource>
</apiSources>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>io.github.swagger2markup</groupId>
<artifactId>swagger2markup-maven-plugin</artifactId>
<version>${swagger2markup.plugin.version}</version>
<dependencies>
<dependency>
<groupId>io.github.swagger2markup</groupId>
<artifactId>swagger2markup-import-files-ext</artifactId>
<version>${swagger2markup.extension.version}</version>
</dependency>
<dependency>
<groupId>io.github.swagger2markup</groupId>
<artifactId>swagger2markup</artifactId>
<version>${swagger2markup.version}</version>
</dependency>
</dependencies>
<configuration>
<swaggerInput>${project.build.directory}/generated/descriptor/swagger.json</swaggerInput>
<outputDir>${generated.asciidoc.directory}</outputDir>
<config>
<swagger2markup.markupLanguage>ASCIIDOC</swagger2markup.markupLanguage>
<swagger2markup.pathsGroupedBy>TAGS</swagger2markup.pathsGroupedBy>
<swagger2markup.extensions.dynamicOverview.contentPath>${project.basedir}/src/docs/asciidoc/extensions/overview</swagger2markup.extensions.dynamicOverview.contentPath>
<swagger2markup.extensions.dynamicDefinitions.contentPath>${project.basedir}/src/docs/asciidoc/extensions/definitions</swagger2markup.extensions.dynamicDefinitions.contentPath>
<swagger2markup.extensions.dynamicPaths.contentPath>${project.basedir}/src/docs/asciidoc/extensions/paths</swagger2markup.extensions.dynamicPaths.contentPath>
<swagger2markup.extensions.dynamicSecurity.contentPath>${project.basedir}src/docs/asciidoc/extensions/security</swagger2markup.extensions.dynamicSecurity.contentPath>
</config>
</configuration>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>convertSwagger2markup</goal>
</goals>
</execution>
</executions>
</plugin>

<!-- Run the generated asciidoc through Asciidoctor to generate
other documentation types, such as PDFs or HTML5 -->
<plugin>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctor-maven-plugin</artifactId>
<version>1.5.3</version>
<!-- Include Asciidoctor PDF for pdf generation -->
<dependencies>
<!-- Comment this section to use the default jruby artifact provided by externalugin -->
<dependency>
<groupId>org.jruby</groupId>
<artifactId>jruby-complete</artifactId>
<version>${jruby.version}</version>
</dependency>
<!-- Comment this section to use the default AsciidoctorJ artifact provided by externalugin -->
<dependency>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctorj</artifactId>
<version>${asciidoctorj.version}</version>
</dependency>

</dependencies>
<!-- Configure generic document generation settings -->
<configuration>
<sourceDirectory>${asciidoctor.input.directory}</sourceDirectory>
<sourceDocumentName>index.adoc</sourceDocumentName>
<attributes>
<doctype>book</doctype>
<toc>left</toc>
<toclevels>3</toclevels>
<numbered/>
<hardbreaks/>
<sectlinks/>
<sectanchors/>
<generated>${generated.asciidoc.directory}</generated>
</attributes>
</configuration>
<!-- Since each execution can only handle one backend, run
separate executions for each desired output type -->
<executions>
<execution>
<id>output-html</id>
<phase>package</phase>
<goals>
<goal>process-asciidoc</goal>
</goals>
<configuration>
<backend>html5</backend>
<outputDirectory>${asciidoctor.html.output.directory}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

<dependencies>

<!-- Gravitee Management dependencies-->
Expand Down

0 comments on commit 971d6fe

Please sign in to comment.