Skip to content

Commit

Permalink
Merge pull request #19 from AnnaEleeva/auth_v8(refactoring_delete_com…
Browse files Browse the repository at this point in the history
…ments)

удалены комментарии
  • Loading branch information
DonKeyHot1 authored May 21, 2021
2 parents 74a4361 + dc44b5f commit 84e8160
Show file tree
Hide file tree
Showing 14 changed files with 66 additions and 114 deletions.
1 change: 1 addition & 0 deletions backend/auth/.idea/encodings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion backend/auth/.idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@
@ConfigurationPropertiesScan("ru.naumen.ectmauth.config")
public class Application {




public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,26 +60,19 @@ public User registerUser(@RequestBody User user) throws ServletException, NoSuch
@Operation(summary = "Ожидает почту и пароль пользователя, чтоб войти и получить токены")
@PostMapping("/login")
@ResponseBody
public void login( @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String headerStr, HttpServletRequest request, HttpServletResponse response) throws ServletException, NoSuchAlgorithmException {
public void login(@RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String headerStr, HttpServletRequest request, HttpServletResponse response) throws ServletException, NoSuchAlgorithmException {


/* String encodedCredentials = request
.getHeader(HttpHeaders.AUTHORIZATION)
.replace("Basic ", "");*/
String encodedCredentials=headerStr.replace("Basic ", "");
String encodedCredentials = headerStr.replace("Basic ", "");

String[] decodedCredentials = new String(Base64.getUrlDecoder().decode(encodedCredentials)).split(":");


String email = decodedCredentials[0];
String password = decodedCredentials[1];
/* String email = json.get("email");
String password = json.get("password");
if (email == null || password == null) {
throw new ServletException("Please fill in username and password");
}*/

System.out.println("Hello "+email+" "+password);

System.out.println("Hello " + email + " " + password);

User user = userService.findByEmail(email);

Expand All @@ -93,7 +86,7 @@ public void login( @RequestHeader(value = HttpHeaders.AUTHORIZATION, required =
throw new ServletException("Invalid login. Please check your name and password.");
}

System.out.println("Hello "+email+" "+user.getFirstName());
System.out.println("Hello " + email + " " + user.getFirstName());
Map<String, String> tokens = jwtService.createNewTokens(user.getUser_id(), email, user.getFirstName(), user.getLastName(), user.getProvider());

Cookie cookie_access_token = new Cookie("access_token", tokens.get("access_token"));
Expand All @@ -105,63 +98,14 @@ public void login( @RequestHeader(value = HttpHeaders.AUTHORIZATION, required =

}

/* @Operation(summary = "Выдает новые токены в куки")
@PostMapping("/newToken")
@ResponseBody
public void newToken(@RequestBody(required = false) Map<String, String> json, HttpServletResponse response) {
if (json == null) {
response.setStatus(HttpStatus.FORBIDDEN.value());
}
String email;
String refreshToken;
try {
Jwt<Header, Claims> jwt = Jwts.parser().setSigningKey(JWT_PASSWORD).parse(json.get("access_token"));
email = (String) jwt.getBody().get("email");
refreshToken = json.get("refresh_token");
} catch (ExpiredJwtException e) {
email = (String) e.getClaims().get("email");
refreshToken = json.get("refresh_token");
}
if (email == null || refreshToken == null) {
response.setStatus(HttpStatus.FORBIDDEN.value());
}
else {
String finalRefreshToken = refreshToken;
User user = userService.findByEmail(email);
if (user.getTokens().stream().anyMatch(t -> t.getRefresh_token().equals(finalRefreshToken))) {
tokenService.delete(user.getTokens().stream().filter(t -> t.getRefresh_token().equals(finalRefreshToken)).findFirst().get());
Map<String, String> tokens = jwtService.createNewTokens(user.getUser_id(), email, user.getFirstName(), user.getLastName(), user.getProvider());
Cookie cookie_access_token = new Cookie("access_token", tokens.get("access_token"));
cookie_access_token.setHttpOnly(true);
response.addCookie(cookie_access_token);
Cookie cookie_refresh_token = new Cookie("refresh_token", tokens.get("refresh_token"));
cookie_refresh_token.setHttpOnly(true);
response.addCookie(cookie_refresh_token);

} else {
response.setStatus(HttpStatus.FORBIDDEN.value());
}
}
}
*/
//@CookieValue(value = "refresh_token") String refresh_token_input
@Operation(summary = "Выдает новые токены в куки")
@PostMapping("/newToken")
@ResponseBody
@ApiModelProperty(
value = "A JSON value representing a transaction. An example of the expected schema can be found down here. The fields marked with an * means that they are required.",
example = "{foo: whatever, bar: whatever2}")
public void newToken(@CookieValue(value = "access_token",required = false) String access_token_input, @CookieValue(value = "refresh_token",required = false) String refresh_token_input,HttpServletResponse response) {

// System.out.println("kek");

// return ResponseEntity.ok().body(access_token_input+" \n"+refresh_token_input);
public void newToken(@CookieValue(value = "access_token", required = false) String access_token_input, @CookieValue(value = "refresh_token", required = false) String refresh_token_input, HttpServletResponse response) {


String email;
Expand All @@ -177,8 +121,7 @@ public void newToken(@CookieValue(value = "access_token",required = false) Strin

if (email == null || refreshToken == null) {
response.setStatus(HttpStatus.FORBIDDEN.value());
}
else {
} else {
String finalRefreshToken = refreshToken;
User user = userService.findByEmail(email);
if (user.getTokens().stream().anyMatch(t -> t.getRefresh_token().equals(finalRefreshToken))) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,10 @@ public class VKController {
private final Integer port = Integer.valueOf(System.getenv("PORT"));




TransportClient transportClient = HttpTransportClient.getInstance();
VkApiClient vk = new VkApiClient(transportClient);


/* public VKController() throws ClientException, ApiException {
}*/

@Operation(summary = "Авторизоваться через Вконтакте")
@GetMapping("/authorize")
@ResponseBody
Expand All @@ -78,7 +72,7 @@ public void callback(@RequestParam("code") String code, HttpServletResponse resp
if (user == null) {
user = createNewUser(authResponse.getUserId(), authResponse.getAccessToken());
}
System.out.println(1+" callback_VK "+user.getFirstName()+" "+user.getLastName()+" "+user.getVk_id());
System.out.println(1 + " callback_VK " + user.getFirstName() + " " + user.getLastName() + " " + user.getVk_id());
Map<String, String> tokens = jwtService.createNewTokensWithSocialNetwork(user.getUser_id(), user.getEmail(), user.getFirstName(), user.getLastName(), user.getProvider(), authResponse.getAccessToken());
Cookie cookie_access_token = new Cookie("access_token", tokens.get("access_token"));
cookie_access_token.setHttpOnly(true);
Expand Down Expand Up @@ -108,7 +102,6 @@ private String getRedirectUri() {
}



private User createNewUser(Integer user_vk_id, String token) {

User user = new User();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package ru.naumen.ectmauth.entity;

public enum Provider {
LOCAL, FACEBOOK, VK
LOCAL, FACEBOOK, VK
}
14 changes: 8 additions & 6 deletions backend/auth/src/main/java/ru/naumen/ectmauth/entity/Token.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,12 @@
import java.util.Optional;

@Entity
@Table(name="tokens")
@Table(name = "tokens")
public class Token {



@Id
@Column(name="token_id")
@Column(name = "token_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long token_id;
@CreationTimestamp
Expand All @@ -37,7 +36,6 @@ public class Token {
private String access_token_FB;



public Long getToken_id() {
return token_id;
}
Expand Down Expand Up @@ -86,9 +84,13 @@ public void setAccess_token_VK(String access_token_VK) {
this.access_token_VK = access_token_VK;
}

public String getAccess_token_FB() { return access_token_FB; }
public String getAccess_token_FB() {
return access_token_FB;
}

public void setAccess_token_FB(String access_token_FB) { this.access_token_FB = access_token_FB; }
public void setAccess_token_FB(String access_token_FB) {
this.access_token_FB = access_token_FB;
}


}
33 changes: 20 additions & 13 deletions backend/auth/src/main/java/ru/naumen/ectmauth/entity/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@
import org.hibernate.annotations.CreationTimestamp;

@Entity
@Table(name="users")
@Table(name = "users")
public class User {

@Id
@Column(name="user_id")
@Column(name = "user_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Schema(accessMode = Schema.AccessMode.READ_ONLY)
private Long user_id;
@CreationTimestamp
@Schema(accessMode = Schema.AccessMode.READ_ONLY,description = "Дата создания пользователя")
@Schema(accessMode = Schema.AccessMode.READ_ONLY, description = "Дата создания пользователя")
private Date created;
@Schema(description = "Почта", example = "[email protected]")
private String email;
Expand All @@ -33,17 +33,16 @@ public class User {
private String phone;

@Enumerated(EnumType.STRING)
@Schema(accessMode = Schema.AccessMode.READ_ONLY,description = "Провайдер", example = "VK")
@Schema(accessMode = Schema.AccessMode.READ_ONLY, description = "Провайдер", example = "VK")
private Provider provider;
@Schema(accessMode = Schema.AccessMode.READ_ONLY)
private boolean enabled;
@Schema(accessMode = Schema.AccessMode.READ_ONLY,description = "Идентификатор пользователя Вконтакте")
@Schema(accessMode = Schema.AccessMode.READ_ONLY, description = "Идентификатор пользователя Вконтакте")
private String vk_id;
@Schema(accessMode = Schema.AccessMode.READ_ONLY,description = "Идентификатор пользователя Вконтакте")
@Schema(accessMode = Schema.AccessMode.READ_ONLY, description = "Идентификатор пользователя Вконтакте")
private String fb_id;



@Schema(accessMode = Schema.AccessMode.READ_ONLY)
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(
Expand All @@ -66,7 +65,6 @@ public void setTokens(Set<Token> tokens) {
}



public Long getUser_id() {
return user_id;
}
Expand Down Expand Up @@ -107,9 +105,10 @@ public void setPassword(String password) {
this.password = password;
}

public String getPhone() {
public String getPhone() {
return phone;
}

public void setPhone(String phone) {
this.phone = phone;
}
Expand Down Expand Up @@ -146,11 +145,19 @@ public void setProvider(Provider provider) {
this.provider = provider;
}

public String getVk_id() { return vk_id; }
public String getVk_id() {
return vk_id;
}

public void setVk_id(String vk_id) { this.vk_id = vk_id; }
public void setVk_id(String vk_id) {
this.vk_id = vk_id;
}

public String getFb_id() { return fb_id; }
public String getFb_id() {
return fb_id;
}

public void setFb_id(String fb_id) { this.fb_id = fb_id; }
public void setFb_id(String fb_id) {
this.fb_id = fb_id;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@
@Repository
public interface TokenRepository extends CrudRepository<Token, Long> {
Token save(Token token);
void delete (Token token);

void delete(Token token);
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,4 @@ public interface UserRepository extends CrudRepository<User, Long> {
@Query("SELECT u FROM User u WHERE u.fb_id = :fb_id")
public User findByFb_id(@Param("fb_id") String fb_id);



}
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,14 @@ public class JWTService {

private static final String JWT_PASSWORD = "bm5n3SkxCX4kKRy4";

public Map<String, String> createNewTokensWithSocialNetwork(Long id, String email, String first_name, String last_name, Provider provider, String access_token_vk_or_fb){
public Map<String, String> createNewTokensWithSocialNetwork(Long id, String email, String first_name, String last_name, Provider provider, String access_token_vk_or_fb) {
Map<String, Object> claims = new HashMap<>();
claims.put("admin", "false");
claims.put("email", email);
String accessToken = getSecretToken(id,email,first_name,last_name, provider);//jwt builder
String accessToken = getSecretToken(id, email, first_name, last_name, provider);//jwt builder
Map<String, String> tokenJson = new HashMap<>();
String refreshToken = RandomStringUtils.randomAlphabetic(20);
Token t=new Token();
Token t = new Token();
t.setRefresh_token(refreshToken);
t.setUser(userService.findById(id));
t.setAccess_token(accessToken);
Expand All @@ -49,18 +49,18 @@ public Map<String, String> createNewTokensWithSocialNetwork(Long id, String emai
}

public Map<String, String> createNewTokens(Long id, String email, String first_name, String last_name, Provider provider) {
return createNewTokensWithSocialNetwork(id,email,first_name,last_name,provider,null);
return createNewTokensWithSocialNetwork(id, email, first_name, last_name, provider, null);
}

private String getSecretToken( Long id,String email, String first_name, String last_name, Provider provider) {
private String getSecretToken(Long id, String email, String first_name, String last_name, Provider provider) {
return Jwts.builder()
.setIssuer("Auth Server Ekb Trees")
.setIssuedAt(Calendar.getInstance().getTime())
.setExpiration(Date.from(Instant.now().plusSeconds(100000)))
.claim("id",id)
.claim("id", id)
.claim("email", email)
.claim("first_name",first_name)
.claim("last_name",last_name)
.claim("first_name", first_name)
.claim("last_name", last_name)
.claim("Role", userService.findById(id).get().getRoles().stream().map(Role::getName).toArray(String[]::new))
.signWith(SignatureAlgorithm.HS256, JWT_PASSWORD).compact();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ public class TokenService {
public Token save(Token token) {
return tokenRepository.save(token);
}
public void delete(Token token){ tokenRepository.delete(token);}

public void delete(Token token) {
tokenRepository.delete(token);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,13 @@

public interface UserService {
User save(User user);

User findByEmail(String email);

User findByVk_id(String vk_id);

User findByFb_id(String fb_id);
Optional<User> findById(Long id);

Optional<User> findById(Long id);

}
Loading

0 comments on commit 84e8160

Please sign in to comment.