frozenrainyoo / clientf

Flutter clientend for EnginF

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ClientF

  • 임시명칭: ClientF
  • 명칭설명: EngineF 의 Flutter Client 라는 뜻. Client 가 Angular 이면 ClientA 가 되고 View 이면 ClientV, React 이면 ClientR.
  • 라이센스: MIT
  • 설명: 파이어베이스 백엔드와 플러터로 만드는 커뮤니티 앱
  • 기능: 회원 로그인, 로그아웃, 가입, 수정, 비밀번호 찾기, 회원 사진 등록, 게시판 전체 기능.
  • 본 앱은 파이어베이스를 백엔드로 사용하는 기본 커뮤니티 기능을 가지고 있습니다. 약간 수정을 하면 쇼핑몰 앱이나 회사 소개 앱 등 여러가지로 활용이 가능합니다.
    • 모든 앱에서 회원 가입 및 정보 수정을 필수라고 할 수 있습니다. 또한 최소한의 공지 사항 또는 후기 게시판 정도의 기능은 있어야 겠죠.
    • 파이어베이스를 기본으로 하기 때문에 서버 관리를 하지 않고 편하게 운영 할 수 있다.

개발 련련 문서

설치

  • git clone https://github.com/thruthesky/clientf
  • cd clientf
  • git submodule update --init

iOS 설치 예제

  • ios/GoogleService-Info.plist 파일을 삭제한다.
  • Xcode 에서 Runner > Identity 에서 Bundle ID 를 기록한다.
  • 파이어프로젝트에서 iOS 앱을 추가하고, Bundle ID 를 동일하게 기록한다.
  • GoogleService-Info.plist 를 다운로드해서 Xcode 의 Runner > Runner 아래로 드래그해서 넣는다.
  • 끝! 앱을 실행하고, 회원가입 한 후, Auth 에 추가되는지 본다.

회원 관리

@todo: 개발가이드로 이동

  • 정보 업데이트가 필요 없는, 회원 로그인, 로그아웃은 EnginF 와 상관없이 그냥 firebase_auth 플러그인으로 하면 된다.
  • 회원 가입이나 수정과 같이 정보를 업데이트하는 경우, Enginf 를 통해서 하면 된다.

회원 가입 로직

  • 회원 가입을 하면 로그인 세션이 연결되고 유지되어야 한다.

    • Functions 를 통해서 계정을 생성하면, 로그인 세션이 생성되지 않는다.
    • 즉, Functions 를 통해서 계정을 생성하고, 플러터에서 로그인을 한다.
  • route: user.register

  • data 는 기본적으로 email 과 password 는 필수. 나머지는 얼마든지 추가로 저장 가능.

  • 회원 가입을 하면 기본적으로 Auth 에 계정이 생성되며,

  • Firestore user collection 에 UID 로 추가된 값이 저장 됨

  • 에러코드. 서버 README 참고

로그인

  • 설명은 AppModel::login() 참고
final user = await app.login(data['email'], data['password']);
if (user == null) {
  print('Error login');
} else {
  print('success login');
}

에러 확인

  • Firebase 에서 전달되어져 오는 에러 코드를 그대로 활용하고 i18n text 에도 적용한다.
    • 이 때, i18n text code 는 모두 소문자이므로 Firebase error code 도 소문자로 해 주어야 한다.
try {
  // ...
} on PlatformException catch (e) {
  final code = e.code.toLowerCase(); // 여기 처럼 에러 코드를 소문자로 해야 한다. 이것은 언어 번역에서 사용되기 때문이다.
  if (code == ERROR_INVALID_EMAIL) {
    AppService.alert(null, t(ERROR_INVALID_EMAIL));
  }
  if (code == ERROR_USER_NOT_FOUND) {
    AppService.alert(null, t(ERROR_USER_NOT_FOUND));
  }
} 

온라인 세미나 진행

  • 파이어베이스 및 백엔드 설정
    • 백엔드 설치 설명서 제공
  • ClientF 의 기본 폴더 및 파일 구조
  • 라우팅 및 페이지 구조
  • 다국어 설정
  • 파이어베이스 벡엔드와 데이터 송수신 설명
  • 회원 가입, 로그인, 수정, 로그아웃
  • 회원 사진 등록

About

Flutter clientend for EnginF


Languages

Language:Dart 91.8%Language:Ruby 6.6%Language:Kotlin 0.8%Language:Swift 0.8%Language:Objective-C 0.1%