Skip to content

Connect authentication service to notification service #8

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
Jul 30, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Once Docker is installed you can build from source or use the predefined images
### Building from source
Using gradle wrapper and docker-compose:
```sh
cd user-service
cd authentication-service
./gradlew clean build
docker-compose -f docker-compose-local.yml up --build
```
Expand Down
14 changes: 7 additions & 7 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,10 @@ ext {

dependencies {

compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-actuator')
compile('org.springframework.boot:spring-boot-starter-amqp')

compile('org.springframework.cloud:spring-cloud-starter-config')
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
Expand All @@ -54,17 +55,16 @@ dependencies {
compile('org.springframework.security:spring-security-jwt')
compile('org.springframework.security:spring-security-rsa')

compile("io.springfox:springfox-swagger2:${springfoxVersion}")
compile("io.springfox:springfox-swagger-ui:${springfoxVersion}")
compile("io.springfox:springfox-swagger2:${springfoxVersion}")
compile("io.springfox:springfox-swagger-ui:${springfoxVersion}")
compile('mysql:mysql-connector-java')

testCompile('com.jayway.restassured:rest-assured:2.5.0')
testCompile('com.jayway.restassured:spring-mock-mvc:2.5.0')
testCompile('com.palantir.docker.compose:docker-compose-rule-junit4:0.33.0')
testCompile('org.springframework.boot:spring-boot-starter-test')
testCompile group: 'junit', name: 'junit', version: '4.12'

testCompile('org.mockito:mockito-core:2.8.9')
testCompile('org.springframework.boot:spring-boot-starter-test')
testCompile group: 'junit', name: 'junit', version: '4.12'
testCompile('org.mockito:mockito-core:2.8.9')
}

dependencyManagement {
Expand Down
19 changes: 19 additions & 0 deletions docker-compose-local.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,25 @@ services:
- mysqlserver
ports:
- '8091:8080'
environment:
- RABBIT_HOST=rabbitmq

notificationservice:
image: aista/notification-service
container_name: notificationservice
depends_on:
- rabbitmq
ports:
- '32700:32700'
environment:
- RABBIT_HOST=rabbitmq
- EUREKA_SERVER=discoveryservice

rabbitmq:
image: rabbitmq:management
ports:
- "5672:5672"
- "15672:15672"

volumes:
mysql-data:
Expand Down
47 changes: 47 additions & 0 deletions docker-compose-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
version: '3'

services:

discoveryservice:
image: aista/eureka
container_name: discoveryservice
ports:
- "8761:8761"
environment:
- 'eviction-interval-timer-in-ms: 1000'

mysqlserver:
image: mysql:5.7
container_name: mysqlserver
volumes:
- mysql-data:/var/lib/mysql:rw
restart: always
ports:
- '3306:3306'
environment:
MYSQL_USER:
MYSQL_PASSWORD:
MYSQL_ROOT_PASSWORD: 'root'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
MYSQL_DATABASE: 'user_service'

notificationservice:
image: aista/notification-service
container_name: notificationservice
depends_on:
- rabbitmq
ports:
- '32700:32700'
environment:
- RABBIT_HOST=rabbitmq
- EUREKA_SERVER=discoveryservice

rabbitmq:
image: rabbitmq:management
ports:
- "5672:5672"
- "15672:15672"

volumes:
mysql-data:

19 changes: 19 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,25 @@ services:
- mysqlserver
ports:
- '8091:8080'
environment:
- RABBIT_HOST=rabbitmq

notificationservice:
image: aista/notification-service
container_name: notificationservice
depends_on:
- rabbitmq
ports:
- '32700:32700'
environment:
- RABBIT_HOST=rabbitmq
- EUREKA_SERVER=discoveryservice

rabbitmq:
image: rabbitmq:management
ports:
- "5672:5672"
- "15672:15672"

volumes:
mysql-data:
Expand Down
12 changes: 6 additions & 6 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Fri May 18 16:13:03 EDT 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.5.1-bin.zip
#Tue Jul 03 15:57:23 EDT 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.5.1-all.zip
Empty file modified gradlew
100644 → 100755
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
import java.util.HashMap;
import java.util.Map;

import org.aitesting.microservices.authentication.model.User;
import org.aitesting.microservices.authentication.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
Expand All @@ -11,7 +14,9 @@
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import springfox.documentation.builders.PathSelectors;
Expand All @@ -27,7 +32,10 @@
@EnableAuthorizationServer
@EnableSwagger2
public class AuthenticationServiceApplication {


@Autowired
private UserRepository userRepository;

@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any())
Expand All @@ -42,6 +50,11 @@ public Map<String, Object> user(OAuth2Authentication auth) {
return userInfo;
}

@RequestMapping(value = { "/user/register" }, method = RequestMethod.POST)
public User createUser(@RequestBody User user) {
return userRepository.save(user);
}

public static void main(String[] args) {
SpringApplication.run(AuthenticationServiceApplication.class, args);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,21 @@
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

@Component
public class InspectHeaderFilter implements Filter {

private static final Logger log = LoggerFactory.getLogger(InspectHeaderFilter.class);

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
System.out.println("I AM HITTING THE AUTH SERVER: " + httpServletRequest.getHeader("Authorization"));
log.info(String.format("Hitting the auth server %s", httpServletRequest.getHeader("Authorization")));
filterChain.doFilter(httpServletRequest, servletResponse);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package org.aitesting.microservices.authentication.config;

import org.springframework.amqp.core.TopicExchange;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitConfig {

@Bean
public ConnectionFactory connectionFactory() {
return new CachingConnectionFactory(System.getenv("RABBIT_HOST"));
}

@Bean
public RabbitTemplate rabbitTemplate() {
return new RabbitTemplate(connectionFactory());
}

@Bean
public TopicExchange topicExchange() {
return new TopicExchange("notification.exchange.notification");
}

}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,24 +1,30 @@
package org.aitesting.microservices.authentication.model;

import java.io.Serializable;
import java.util.UUID;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.Type;

/**
*
* @author jsoto128@fiu.edu
*
*/
@Entity
@Table(name = "user")
public class User implements Serializable {

/**
*
*/
private static final long serialVersionUID = 1L;

@Id
@Column(name = "user_id", nullable = false)
private Long userId;
@Column(name = "user_id", nullable = false, columnDefinition = "VARCHAR(36)")
@Type(type = "uuid-char")
private UUID userId;

@Column(name = "username", nullable = false)
private String username;
Expand All @@ -29,11 +35,15 @@ public class User implements Serializable {
@Column(name = "enabled", nullable = false)
private boolean enabled;

public Long getUserId() {
public User() {
userId = UUID.randomUUID();
}

public UUID getUserId() {
return userId;
}

public void setUserId(Long userId) {
public void setUserId(UUID userId) {
this.userId = userId;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.aitesting.microservices.authentication.model;

import java.io.Serializable;
import java.util.UUID;

import javax.persistence.Column;
import javax.persistence.Entity;
Expand All @@ -17,7 +18,7 @@ public class UserOrganization implements Serializable {
private static final long serialVersionUID = 1L;

@Column(name = "organization_id", nullable = false)
String organizationId;
UUID organizationId;

@Id
@Column(name = "username", nullable = false)
Expand All @@ -31,11 +32,11 @@ public void setUsername(String username) {
this.username = username;
}

public String getOrganizationId() {
public UUID getOrganizationId() {
return organizationId;
}

public void setOrganizationId(String organizationId) {
public void setOrganizationId(UUID organizationId) {
this.organizationId = organizationId;
}

Expand Down
Loading