Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
a35ac64
please
DevYoung00 Aug 4, 2022
ad743aa
message_commit
DevYoung00 Aug 4, 2022
d1d0ead
chating add
yeojinLee-dev Aug 4, 2022
4626787
Merge branch 'develop' of https://github.com/Nanuer/server into featu…
yeojinLee-dev Aug 4, 2022
307ba41
ãchat files add
yeojinLee-dev Aug 4, 2022
3e4c819
refactoring addHeart and deleteHeart
Dayne-w Aug 5, 2022
47f39ee
Completed refactoring addHeart
Dayne-w Aug 5, 2022
52d75ba
Completed addHeart and deleteHeart
Dayne-w Aug 5, 2022
23f1b4c
유저 삭제할 때 게시물도 같이 삭제 작업 완료
Dayne-w Aug 6, 2022
718cb0c
유저 삭제시에, 해당 유저의 포스트들과 해당 포스트들에 걸려있는 찜들 모두 삭제, 포스트 삭제 시에 해당 포스트에 걸려있는 …
Dayne-w Aug 6, 2022
e87f93c
fix : get post list
yeojinLee-dev Aug 7, 2022
558e1aa
feature : get all posts
yeojinLee-dev Aug 8, 2022
e7981b9
fix error from message
yeojinLee-dev Aug 8, 2022
c19e6ba
fix : get post list(return style)
yeojinLee-dev Aug 9, 2022
37bfd4b
fix : 학교별 게시물 조회
yeojinLee-dev Aug 12, 2022
02d2827
jwt-modi
DevYoung00 Aug 14, 2022
5bdafd7
jwt
DevYoung00 Aug 14, 2022
d33a3d2
heart-merge
DevYoung00 Aug 14, 2022
1c90f45
ws-connect
DevYoung00 Aug 14, 2022
4104fe9
refactoring Stomp message (Apic으로 테스트 성공)
Dayne-w Aug 14, 2022
ff231f0
chat_v1
DevYoung00 Aug 18, 2022
490cec2
chat_v0
DevYoung00 Aug 18, 2022
a74ad6a
refactoring 채팅방 토큰 써서 유저 인식
Dayne-w Aug 18, 2022
b27afdb
chat_v1
DevYoung00 Aug 18, 2022
61330b1
chat_v2
DevYoung00 Aug 18, 2022
6bc1544
일단 커밋
yeojinLee-dev Aug 18, 2022
7b8c024
merge : feature/post
yeojinLee-dev Aug 18, 2022
a93a1a8
Merge pull request #9 from Nanuer/feature/post
yeojinLee-dev Aug 18, 2022
b328ade
chat_v3
DevYoung00 Aug 18, 2022
6a5cf6f
merge aborting..
yeojinLee-dev Aug 18, 2022
1e9007e
master에 merge를 위하여
yeojinLee-dev Aug 19, 2022
ebc562b
Merge pull request #10 from Nanuer/feature/post
yeojinLee-dev Aug 19, 2022
a6adee1
마스터 pull 전 커밋
DevYoung00 Aug 19, 2022
e930117
Merge branch 'master' of https://github.com/Nanuer/server into featur…
DevYoung00 Aug 19, 2022
95debde
게시물 생성시 채팅방 생성
DevYoung00 Aug 19, 2022
dfba4f7
fix : 학교별 리스트 userEntity issue
yeojinLee-dev Aug 21, 2022
7e8c246
0821 오류수정, return값 수정
DevYoung00 Aug 21, 2022
6939dcc
게시물 상태 업데이트 긴으
yeojinLee-dev Aug 23, 2022
a9dea76
merge master and user-modi
yeojinLee-dev Aug 23, 2022
980f4fa
Merge pull request #11 from Nanuer/feature/user-modi
yeojinLee-dev Aug 23, 2022
6709d98
수정 : 유저가 채팅방 들어갈때 이미 room테이블에 존재하면 중복저장 하지않게 수정
DevYoung00 Aug 23, 2022
c388c7d
0824 병합 전 커밋
DevYoung00 Aug 24, 2022
d818ba9
feature add : update progress / Validation check
yeojinLee-dev Aug 24, 2022
e05e20c
feature add : update post progress / Validation check
yeojinLee-dev Aug 24, 2022
a2ad385
complete refactoring add Heart(postId만 받고, 유저는 토큰으로)
Dayne-w Aug 22, 2022
0fae231
complete refactoring mypage and heart(완전 끝)
Dayne-w Aug 22, 2022
7bd483b
merge with feature/user-modi
yeojinLee-dev Aug 24, 2022
aced1e6
final commit
yeojinLee-dev Aug 24, 2022
095ccbf
Merge pull request #12 from Nanuer/feature/post
yeojinLee-dev Aug 24, 2022
fa2ddcd
Merge pull request #13 from Nanuer/develop
yeojinLee-dev Aug 24, 2022
44cd530
fix my page
yeojinLee-dev Aug 25, 2022
e95a1a1
Merge branch 'master' of https://github.com/Nanuer/server into featur…
yeojinLee-dev Aug 25, 2022
8a24669
Merge pull request #14 from Nanuer/feature/post
yeojinLee-dev Aug 25, 2022
8fa4cd7
fix/ add api
yeojinLee-dev Aug 30, 2022
2789fc2
Merge branch 'master' of https://github.com/Nanuer/server into featur…
yeojinLee-dev Aug 30, 2022
cb0185e
Merge pull request #15 from Nanuer/feature/post
yeojinLee-dev Sep 2, 2022
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
11 changes: 5 additions & 6 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,11 @@ dependencies {
//이메일 보내기
implementation 'org.springframework.boot:spring-boot-starter-mail'


//문자인증
implementation group: 'net.nurigo', name: 'javaSDK', version: '2.2'

//이메일 보내기
implementation 'org.springframework.boot:spring-boot-starter-mail'
//채팅
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-websocket'
implementation group: 'org.webjars', name: 'stomp-websocket', version: '2.3.3-1'
implementation 'it.ozimov:embedded-redis:0.7.2'

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
@SpringBootApplication
public class NanuerServerApplication {


public static void main(String[] args) {
SpringApplication.run(NanuerServerApplication.class, args);
System.out.println("hello");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,22 @@ public enum BaseResponseStatus {

// users
USERS_EMPTY_USER_EMAIL(false, 2010, "유저 이메일 값을 확인해주세요."),
USER_USER_EMPTY_USER(false, 2011, "존재하지 않는 유저입니다."),

// [POST] /post
POST_USERS_EMPTY_EMAIL(false, 2015, "아이디를 입력해주세요."),
POST_USERS_INVALID_EMAIL(false, 2016, "이메일 형식을 확인해주세요."),
POST_USERS_EXISTS_EMAIL(false,2017,"중복된 아이디입니다."),
POST_USERS_EXISTS_EMAIL(false,2017,"중복된 이메일입니다."),
POST_POST_INVALID_TITLE(false, 2018, "게시물의 제목을 확인해주세요."),
POST_POST_INVALID_CONTENT(false, 2019, "게시물의 내용을 확인해주세요."),
POST_POST_EMPTY_POST(false,2020, "존재하지 않는 게시물입니다."),
POST_POST_INVALID_CATEGORY(false, 2021, "게시물의 카테고리를 확인해주세요."),

// [POST] /users
POST_USERS_EMPTY_ID(false, 2015, "아이디를 입력해주세요."),
POST_USERS_INVALID_ID(false, 2016, "이메일 형식을 확인해주세요."),
POST_USERS_EXISTS_ID(false,2017,"중복된 아이디입니다."),
//POST_USERS_EXISTS_ID(false,2017,"중복된 이메일입니다."),
POST_USERS_EXISTS_PHONE(false, 2021, "중복된 휴대폰 번호입니다."),

/**
* 3000 : Response 오류
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.example.nanuer_server.config.Chat;


import com.example.nanuer_server.config.User.JwtTokenProvider;
import com.example.nanuer_server.domain.entity.ChatMessageEntity;
import com.example.nanuer_server.domain.repository.UserRepository;
import com.example.nanuer_server.service.chat.ChatService;
import lombok.RequiredArgsConstructor;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.simp.stomp.StompCommand;
import org.springframework.messaging.simp.stomp.StompHeaderAccessor;
import org.springframework.messaging.support.ChannelInterceptor;
import org.springframework.stereotype.Component;

import java.security.Principal;
import java.util.Objects;
import java.util.Optional;

@Component
@RequiredArgsConstructor
public class StompHandler implements ChannelInterceptor {
private final JwtTokenProvider jwtTokenProvider;
//private final ChatService chatService;
private final UserRepository userRepository;

@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
StompHeaderAccessor accessor = StompHeaderAccessor.wrap(message);
System.out.println("message:" + message);
System.out.println("헤더 : " + message.getHeaders());

if (StompCommand.CONNECT.equals(accessor.getCommand())) {
jwtTokenProvider.validateToken(Objects.requireNonNull(accessor.getFirstNativeHeader("X-AUTH-TOKEN")));
System.out.println("토큰 : " + accessor.getNativeHeader("X-AUTH-TOKEN"));
}
return message;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.example.nanuer_server.config.Chat;

import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.ChannelRegistration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.*;

@Configuration
@EnableWebSocketMessageBroker
@RequiredArgsConstructor
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

private final StompHandler stompHandler;

@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/sub");
registry.setApplicationDestinationPrefixes("/pub");
}

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry
.addEndpoint("/ws")
.setAllowedOrigins("*");
}
/*
@Override
public void configureClientInboundChannel(ChannelRegistration registration) {
registration.interceptors(stompHandler);
}*/
}
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ public String getUserPk(String token) {
return (String) Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token).getBody().getSubject();
}


// Request의 Header에서 token 값을 가져옵니다. "Authorization" : "TOKEN값'
public String resolveToken(HttpServletRequest request) {
return request.getHeader("X-AUTH-TOKEN");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@ protected void configure(HttpSecurity http) throws Exception {

//URL 인증여부.
http.authorizeRequests()
.antMatchers( "/", "/user/**", "/css/**", "/api/mypage/**", "/exception/**", "/favicon.ico", "/post/**").permitAll()
.antMatchers("/user/**","/heart/**","/post/**","/mypage/**","/chat/**").hasAuthority("ROLE_USER")
.antMatchers( "/join","/login","/css/**", "/getEmail","/updatePw", "/chat/**", "/ws/**","/room/**","/hello/**","/chat/join/**","/message/**")
.permitAll()
.anyRequest().authenticated();

//JwtFilter 추가
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package com.example.nanuer_server.controller.Chat;

import com.example.nanuer_server.config.BaseException;
import com.example.nanuer_server.config.BaseResponse;
import com.example.nanuer_server.config.User.JwtTokenProvider;
import com.example.nanuer_server.domain.entity.ChatMessageEntity;
import com.example.nanuer_server.domain.entity.ChatRoomEntity;
import com.example.nanuer_server.domain.entity.UserEntity;
import com.example.nanuer_server.domain.repository.Chat.ChatRoomRepository;
import com.example.nanuer_server.domain.repository.UserRepository;
import com.example.nanuer_server.dto.Chat.GetChatUserDto;
import com.example.nanuer_server.service.User.UserService;
import com.example.nanuer_server.service.chat.ChatService;
import lombok.RequiredArgsConstructor;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.simp.SimpMessageSendingOperations;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
@RestController
@RequiredArgsConstructor
@RequestMapping("/chat")
public class ChatController {

private final SimpMessageSendingOperations simpMessageSendingOperations;
private final UserService userService;
private final ChatService chatService;
private final JwtTokenProvider jwtTokenProvider;
private final UserRepository userRepository;
private final ChatRoomRepository chatRoomRepository;

/*
/sub/channel/12345 - 구독(channelId:12345)
/pub/send - 메시지 발행
*/

//방번호(roomId), 유저Id(sender)
@GetMapping("/getInfo")
public BaseResponse<GetChatUserDto> GetChatUser(HttpServletRequest request, @RequestParam int post_id) throws BaseException {
int userId = userService.GetHeaderAndGetUser(request);
UserEntity userEntity = userRepository.findByUserId(userId).get();
int roomNumber = chatRoomRepository.findAllByPostId(post_id).get(0).getRoomNumber();
ChatRoomEntity room = chatService.createRoom(request, post_id);
GetChatUserDto getChatUserDto = GetChatUserDto.builder()
.userId(userId)
.roomNumber(roomNumber)
.nickName(userEntity.getNickName())
.profileImg(userEntity.getProfileImg())
.build();
return new BaseResponse<>(getChatUserDto);
}

@MessageMapping("/send") //채팅방에서 메세지 보내기 버튼
public ChatMessageEntity message(ChatMessageEntity message) {
//String userEmail = jwtTokenProvider.getUserPk(token);
//String nickName = userRepository.findByEmail(userEmail).get().getNickName();

UserEntity userEntity = userRepository.findByUserId(message.getSender()).get();
message.setNickName(userEntity.getNickName());
message.setProfileImg(userEntity.getProfileImg());
System.out.println("ChatController : message() => " + message.getData());
chatService.sendChatMessage(message);
return message;
}

//jwt 읽어서 isWriter(글작성자인지, 아닌지) return
/*
@GetMapping("/isWriter")
public BaseResponse<Boolean> IsWriter(){

Boolean result = ;
return new BaseResponse<>(result)
}
*/

/*
@PostMapping("/join")
@ResponseBody
public BaseResponse<Integer> createRoom(HttpServletRequest request, @RequestParam int postId) throws BaseException {

ChatRoomEntity room = chatService.createRoom(request, postId);
return new BaseResponse<>(room.getRoomNumber());
}*/




}
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package com.example.nanuer_server.controller;

import com.example.nanuer_server.config.BaseException;
import com.example.nanuer_server.config.BaseResponse;
import com.example.nanuer_server.config.User.JwtTokenProvider;
import com.example.nanuer_server.domain.entity.UserEntity;
import com.example.nanuer_server.domain.entity.UserRole;
import com.example.nanuer_server.dto.User.JoinUserDto;
import com.example.nanuer_server.dto.User.LoginUserDto;
import com.example.nanuer_server.dto.User.UserInfoDto;
import com.example.nanuer_server.service.User.UserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;

@Log4j2
@RequiredArgsConstructor
@RestController
public class PermitController {

private final UserService userService;
private final JwtTokenProvider jwtTokenProvider;

@ResponseBody
@PostMapping("/join")
public BaseResponse<UserEntity> join(@RequestBody JoinUserDto joinUserDto) {
try {
UserEntity userEntity = userService.signup(joinUserDto);
return new BaseResponse<>(userEntity);
} catch (BaseException exception) {
return new BaseResponse<>((exception.getStatus()));
}
}

//로그인
@ResponseBody
@PostMapping("/login")
public BaseResponse<String> login(@RequestBody LoginUserDto loginUserDto) {
try {

UserInfoDto userInfoDto = userService.login(loginUserDto);
String Email = userInfoDto.getEmail();
UserRole role = userInfoDto.getRole();
String result = jwtTokenProvider.createToken(Email, role);
return new BaseResponse<>(result);
} catch (BaseException exception) {
return new BaseResponse<>((exception.getStatus()));
}
}

//아이디 찾기
@GetMapping("/getEmail")
public BaseResponse<String> GetUserEmail(@RequestParam String phone){
try{
UserInfoDto userInfoDto = userService.GetUserByPhone(phone);
String result = userInfoDto.getEmail();
return new BaseResponse<>(result);

}
catch (BaseException exception){
return new BaseResponse<>((exception.getStatus()));
}
}

//비밀번호 재설정
@PatchMapping("/updatePw")
public BaseResponse<String> ModifyPw(@RequestParam String phone, String password){
try {
userService.ModifyPw(phone,password);
UserInfoDto userInfoDto = userService.GetUserByPhone(phone);
String result = "새 비밀번호 : " + userInfoDto.getPassword();
return new BaseResponse<>(result);
} catch(BaseException exception){
return new BaseResponse<>(exception.getStatus());
}
}


}
Loading