10월 4일 ~ 10월 7일 팀 프로젝트 상황 + 멘토링

GoldenDusk·2023년 10월 8일
0
post-thumbnail

일단 전체적으로 상황 정리 및 파트 분배

🍇 파트에 대한 논의

1. 민성님이 커뮤니티 파트를 가져가주셨다.

  • 월요일에 휴강인데 전화드려서 말씀드렸다. 내가 메인페이지를 맡는 대신 커뮤니티 파트를 가져가 주셨다.. 덕분에 부담감이 많이 덜어졌다...
  • 나도 잘못하는데 민성님은 코드적인 문제 해결 능력이 진짜 좋으신 것 같다.

2. 비밀번호 암호화 부분은 일단 제외시키기로 했다.

  • 회원가입과 로그인 부분에 암호화를 뒤늦게 적용해서 비밀번호 찾기 부분에서 문제가 생겼다.
  • 비밀번호 찾기의 경우 완전히 비밀번호 자체를 보여주는데 암호화 시켜버리면 암호화된 비밀번호를 보여준다는 것
  • 새별님이 보내주신 회원가입

  • 암호화 처리는 잘 됨

  • 회원가입과 합친 후 : 암호화와 비교해서 로그인까지는 구현 예정임 ㅠㅠㅠㅠ(의존성 문제 자꾸 발생해서 해결 할 예정) ⇒ 해결

  • 순한 의존문제로 loginServiceImpl부분 관련된 것을 Config에서 다 막아버리고 로그인에서 구현 해버림

package com.in4mation.festibook.config;

import com.in4mation.festibook.jwt.JwtUtils;
import com.in4mation.festibook.service.login.LoginServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

@Configuration // 해당 클래스를 Spring Configuration으로 등록
@EnableWebSecurity // Spring Security를 활성화
@EnableGlobalMethodSecurity(prePostEnabled = true) // 메소드 수준에서의 보안을 활성화
public class SecurityConfig extends WebSecurityConfigurerAdapter {

   /* @Autowired // JwtUtils Bean을 주입
    private JwtUtils jwtUtils;
    @Autowired
    private UserDetailsService loginService;*/

    private final JwtUtils jwtUtils;
   /* private final LoginServiceImpl loginService;*/

    @Autowired
    public SecurityConfig(@Lazy JwtUtils jwtUtils/*, LoginServiceImpl loginService*/) {
        this.jwtUtils = jwtUtils;
        /*this.loginService = loginService;*/
    }

    @Override // HttpSecurity를 사용하여 Web Security 설정을 오버라이드한다.
    protected void configure(HttpSecurity http) throws Exception {
        http
                .csrf().disable() // CSRF(사이트 간 요청 위조) 공격 방어를 비활성화
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                // 세션을 생성하지 않으며, STATELESS로 설정하여, 서버가 상태를 저장하지 않게합니다.
                .and()
                .authorizeRequests() // HttpServletRequest에 따라 접근을 제한
                .antMatchers("/**").permitAll() // 모든 경로에 대해 접근을 허용
//                .antMatchers(
//                        "/api/login"
//                ).permitAll()
                .anyRequest().authenticated(); // 그 외의 모든 요청은 인증을 요구

        ;
    }

    /*@Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(loginService).passwordEncoder(passwordEncoder());
    }*/

    /* // void로 쓰면 안됨!!!!
    @Autowired // AuthenticationManagerBuilder를 주입받아 사용자 세부 서비스를 설정
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(loginService).passwordEncoder(passwordEncoder());
        // 사용자의 세부 서비스를 설정하고, 비밀번호 인코더를 설정합니다.
    }*/

    @Bean // AuthenticationManager Bean을 생성하여 Spring Context에 등록
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean(); // 기본 AuthenticationManager Bean을 반환
    }

    @Bean // PasswordEncoder Bean을 생성하여 Spring Context에 등록
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder(); // 비밀번호를 인코딩하는데 사용되는 BCryptPasswordEncoder를 반환
    }
}
  • 방금 합쳐서 테스트 해봄 두 가지의 문제가 발생
  1. 이메일이 같을 경우 필수 정보 확인하라고만 나옴 이메일이 이미 존재할 경우 이메일이 존재합니다라는 말을 띄워야 할 것 같다.
  • 이후 새별님이 이메일 중복 확인 처리해주셨다.
  1. 비밀번호 찾기에서 문제가 생김

  1. 원래대로의 해결방법이라면 아래와 같다.
  • 비밀번호 찾기 대신 비밀 번호 재설정으로 바꿔야 할 것 같다 ㅠㅠ

    비밀번호를 복구하는 것은 일반적으로 안전하지 않으며, 대부분의 시스템은 이를 허용하지 않습니다. 비밀번호는 해시와 솔트를 사용하여 암호화되기 때문에, 일단 비밀번호가 암호화되면 원래의 비밀번호로 되돌릴 수 없습니다. 이것이 바로 해시 함수의 한 방향성(one-way) 특성 때문

  • 비밀번호 재설정:

    비밀번호 재설정 링크 제공:
    사용자가 비밀번호를 잊어버렸다고 알리면, 시스템은 사용자의 이메일 주소로 비밀번호 재설정 링크를 보냅니다.
    유효한 토큰 확인:
    사용자가 링크를 클릭하면, 시스템은 URL에 포함된 토큰이 유효한지 확인합니다.
    비밀번호 변경 허용:
    토큰이 유효하다면, 사용자에게 새로운 비밀번호를 설정할 수 있는 페이지를 제공합니다.

  1. 결론적으로는 커뮤니티와 추천페이지를 나와 민성님 둘이서 작업해야 하기 때문에 일단 완성을 목적으로 두고 급하지 않은 암호화 부분은 걷어냈다. => 추후 과정 끝난 후 암호화 처리 부분은 주석처리로 했기 때문에 추가 할 수 있다.

3. 메인페이지를 내가 맡기로 하고 조장이 일단 내가 됨

  • 일단 메인페이지는 간략적인 것이라 일단 마이페이지 진행 후 진행 예정
  • 강사와의 연락망도 그렇고 그 전부터 중간적인 역할을 하고 있었고 노션 페이지 제작, 템플릿 등 문서적인 정리를 하고 있었기에 조장이 나간 지금 내가 맡게 되었다.
  • 하지만 조장이라고 별거 없다. 하지만 부담감과 책임감이 엄청나게 온다 ㅠㅠㅠ 그나마 팀원들이랑 민성님이 파트 재분배해서 가져가시고 새별님이 원래 말씀하신 대로 못나오는데도 불구하고 발표자료까지 책임지고 맡아서 하신다는 점이 멘탈도 덜 나가고 부담감도 덜게 된 것 같다.

🍇 문서 정리

1. 그에 관련 하여 전체적으로 수정완료

2. 구글 드라이브에 wbs, erd, 기획안, 요구사항 정의서 수정

  • wbs는 파트 별로 수정을 팀원들한테 부탁하였다.'
  • 나머지는 우리가 변경사항이 많았는데 제대로 정리가 안되어있길래 전부 다 바꿔두었다.

3. 그에 맞춰 피그마도 수정중

  • 피그마도 많이 바뀌었는데 내 파트에 경우 진행하면서 피그마도 같이 수정중이다.

4. 멘토링을 위한 총 정리 문서들도 정리 완료

추석 후 논의

🍇 전체적인 상황

1. 모든 팀원들한테 조장분의 개인적인 사정으로 같이 진행 못한다는 것을 말씀드렸다.

  • 전체적으로 상황에 대해 말씀드리기를 완료 했다.

2. 각자 진행사항 논의

  • 각자 진행사항에 대해 말하고 계획을 진행함
  • WBS 및 요구사항 정의서, 기획서 수정완료

🍇 발표 자료를 위한 공동작업 준비

1. 새별님이 알려주신 미리캠퍼스 기본틀 만들기

  • 목차랑 표지정도 만들어서 작업했다.
  • 이후 팀원들에게 공유 예정

2. 미리캠퍼스 가입 요망(PPT 공동작업)

3. 작업한 템플릿 링크

🍇 깃허브 금주 파일에 초대

  • 전부 초대 완료 하였다.

🍇 기간 논의

구현기간

  • 12일~13일 오전까지는 자신의 파트 마무리 짓고 13일 오후에는 하나의 파일에 합치는 게 목적
  • 멘토링 때 멘토분들한테 피드백 받은대로 일단 11일에 합친 후 마저 작업하기로 했다.

PPT 기간

  • 틈나는대로 자기 부분 작업 14일 멘토링 때 설명할 수 있을 정도면 되고 사진 정도만 넣고 설명해도 되기 때문에 넣는 정도로만 목표로만 하면 되는데 사진 정도는 넣어주셔야 합니다! 사진이나 설명해야 함
  • 이후 변동이 있어서 구현 마치는 대로 빠르게 ppt 작업 해주기로 하였다.

배포기간 + 정리기간

  • 멘토링 이후 14일 오후 ~ 17일까지 배포와 배포 도중 에러 고치고 깃허브 리드미에 설명 올리고 18일마무리 + 발표준비 19일 발표 및 각자 보내기하면 될 것 같습니당

🍇 축제/행사 파트 관련 논의

1. 조장분이 해주고 가신 csv 파일 기준으로 축제/행사 파트 논의 진행

2. 축제 파트 csv 파일 수정하기 + 이미지

  1. 제외시킬 것 제외 시키기(52개로 줄임)
  • 내 화면을 공유 후 제외시킬 기준을 정해서 제외시켰다.

2022.csv

2023.csv

  1. 이후 이미지 관련 논의

  1. 이미지 찾기 csv 2023 기준
  • 1-14 : 이금주
  • 15-28 : 홍아진
  • 29- 42 : 배찬희
  • 43-55 : 신지오
  1. 2022 csv 파일에서 가져올 것 5개
  • 우리의 기획 목적이 작년 후기도 보고 미리 그 축제 분위기를 알아보고 갈 수 있게 하자의 의미라 2023이랑 같은 축제 기준으로 보여주는 용도로 5개0만 추려냄
1. 인삼축제(파주) - 지역특산물
2. 수원화성문화제 - 전통역사
3. 이천도자기축제 - 지역특산물
4. 장미축제 - 생태자연
5. 소래포구축제 - 문화예술
  1. csv 파일 start 기간이 이상
  • 오픈 api를 가져다가 둔 건데 기간이 이상하다.
  • 축제 파트맡으신분들 이미지 파일 찾아보니 CSV start 기간이 잘못된 것들이 대부분.. 이미지 찾으면서 기간 설정이 이상하면 csv파일에 수정 요청
  1. 카테고리 확정

    1. 문화예술
    2. 주민화합
    3. 전통역사
    4. 지역특산물
    5. 생태자연
  2. 파일 합치기

  • 금요일 각자 노션에 올려준 이미지 합쳐서 이미지 경로를 저장해서 수정 후 합친 파일 올려 드림

  • 문제점 : 이후 보니까 csv 파일에 인코딩이 잘못되어 있어서 데이터베이스에 한 번에 insert 할 때 한글 깨짐 현상

  • 해결 : 메모장으로 열어서 => 다른이름 저장 => 다시 데이터 베이스에 넣으니 문제없이 작동

10/7 멘토링

후기

  1. 들어오기 전 팀원분들한테 전체틀과 내 파트는 내가 발표할 테니 각자 맡은 파트에 대해 멘토분들한테 말해드리는 것을 요청드림
  2. 각자 발표 후 전체적인 것을 말씀드렸다.
  3. 유승주 멘토님은 기술적인 부분에서 조언을 해주시고 ppt 관련도 다음주에 조언해주신다고 하셨다.
  4. 최승호 멘토님은 내가 반응형 웹으로 만든 것을 보시고는 충분히 승산있다고 하시면서 자신의 사비로 2등에게 줄 영화티켓 2장씩 매니저한테 전달해주시겠다고 ㅠㅠㅠㅠㅠㅠ 그래서 팀원들 사기가 올라가서 다행이었고 감사했다.

나의 진행 사항

메인 페이지 틀은 완성

  • 메인 페이지 틀은 완성해서 일단 이후 축제 페이지에서 이미지 따오는 것을 할 예정

마이페이지는 어느정도 완성

  • 마이페이지 관련 글은 다음주에 총제적으로 정리하기로..

회고

많이 걱정했는데 어찌저찌 진행은 될 것 같아 다행이다. 그래도 조원, 팀원 분들이 포기하지 않는 분들이라 다행이라고 생각한다 1주일 반동안 화이팅해야지

profile
내 지식을 기록하여, 다른 사람들과 공유하여 함께 발전하는 사람이 되고 싶다. gitbook에도 정리중 ~

0개의 댓글