Skip to content

Commit

Permalink
merge branch feature/16-login
Browse files Browse the repository at this point in the history
  • Loading branch information
Younggun-Kim committed Nov 21, 2024
2 parents 15b6f16 + 7df14b7 commit e25111d
Show file tree
Hide file tree
Showing 61 changed files with 1,928 additions and 532 deletions.
33 changes: 33 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,39 @@ BLoC 패턴 + 클린 아키텍처 적용

</details>

<details>
<summary>로그인/회원가입 기능</summary>

### 로그인/회원가입 기능

1. 로그인
- 로그인 타입으로 사업자(긱워커찾기), 근로자(새로운 일 찾기)을 선택
- 아이디, 비밀번호를 입력
- 비밀번호는 암호화되어 표시
- 비밀번호 우측 버튼을 통해 입력한 비밀번호를 확인 가능
- 이메일 입력시 입력된 이메일의 형식을 검사
- 비밀번호는 8자리 이상 입력되었는지 검사
- 로그인 성공 시 공고 목록 화면으로 이동
2. 회원가입
- 이름, 생년월일, 성별, 휴대폰 번호, 이메일, 비밀번호 필수 입력값
- 휴대폰 번호 인증 기능
- 이메일 중복 검사
- 비밀번호 암호화하여 표시
- 암호화된 비밀번호 확인 기능 제공
- 회원가입 성공 시 로그인 화면으로 이동
3. 아이디 찾기
- 휴대폰 번호 인증을 통한 아이디 찾기 기능
- 아이디 찾기 성공시 성공 화면 표시
- 아이디 찾기 실패시 실패 화면 표시
4. 비밀번호 찾기
- 아이디, 휴대폰 번호 인증을 통한 본인인증
- 본인 인증 성공 시 비밀번호 재설정
- 본인 인증 실패 시 실패 문구 표시
- 가입된 계정이 없을 경우 안내 문구 표시
- 비밀번호 재설정 완료 후 로그인 화면으로 이동

</details>

<details>
<summary>일정 관리 기능</summary>

Expand Down
3 changes: 2 additions & 1 deletion android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
<application
android:label="withu_app"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
android:icon="@mipmap/ic_launcher"
android:enableOnBackInvokedCallback="true">
<activity
android:name=".MainActivity"
android:exported="true"
Expand Down
20 changes: 20 additions & 0 deletions assets/translations/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,26 @@
"noApplicants": "지원자가 없습니다.",
"closingRecruitment": "모집마감",
"noSavedJobPosting": "저장된 공고가 없습니다!",
"pleaseEnterJobPostingTitle": "공고 제목을 입력해주세요.",
"validationMessage": {
"jobPosting": {
"title": "공고 제목을 입력해 주세요.",
"content": "근무내용을 입력해 주세요.",
"category": "카테고리를 선택해 주세요.",
"contractType": "기간형식을 선택해 주세요.",
"contractStartDate": "근로 계약 기간을 선택해 주세요.",
"contractEndDate": "근로 계약 종료 기간을 선택해 주세요.",
"workStartTime": "근무 시작 시간을 선택해 주세요.",
"workEndTime": "근무 종료 시간을 선택해 주세요.",
"participants": "모집인원을 0명 이상 입력해 주세요.",
"payType": "급여 방법을 선택해 주세요.",
"payAmount": "급여를 0원 이상 입력해 주세요.",
"address": "주소를 입력해 주세요.",
"preferredQualification": "우대사항을 입력해 주세요.",
"travelTimePaid": "이동시간 급여 여부를 선택해 주세요.",
"breakTimePaid": "휴게시간 급여 여부를 선택해 주세요."
}
},
"findingGeekWorker": "긱워커 찾기",
"findingNewJob": "새로운 일 찾기",
"pleaseEnterEmail": "이메일을 입력해주세요.",
Expand Down
Binary file modified img.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 9 additions & 0 deletions lib/core/types/contract_type.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import 'package:withu_app/core/core.dart';
/// 계약 타입
@JsonEnum(valueField: 'serverKey')
enum ContractType with L10nKeyProvider {
none(l10nKey: '', serverKey: ''),

/// 단기
short(l10nKey: 'shortTerm', serverKey: 'SHORT_TERM'),

Expand All @@ -20,9 +22,16 @@ enum ContractType with L10nKeyProvider {
required this.serverKey,
});

/// None 여부
bool get isNone => this == ContractType.none;

/// 단기 여부
bool get isShort => this == ContractType.short;

/// 장기 여부
bool get isLong => this == ContractType.long;

/// None을 제외한 값들
static List<ContractType> get valuesWithoutNone =>
values.where((type) => type != none).toList();
}
9 changes: 9 additions & 0 deletions lib/core/types/job_category_type.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import 'package:withu_app/core/core.dart';
/// 직업 종류
@JsonEnum(valueField: 'serverKey')
enum JobCategoryType with L10nKeyProvider {
none(l10nKey: '', serverKey: ''),

/// 촬영
photography(l10nKey: 'photography', serverKey: 'PHOTOGRAPHY'),

Expand All @@ -25,4 +27,11 @@ enum JobCategoryType with L10nKeyProvider {
required this.l10nKey,
required this.serverKey,
});

/// None 여부
bool get isNone => this == none;

/// None을 제외한 값들
static List<JobCategoryType> get valuesWithoutNone =>
values.where((type) => type != none).toList();
}
9 changes: 9 additions & 0 deletions lib/core/types/pay_type.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import 'package:withu_app/core/core.dart';
/// 급여 타입
@JsonEnum(valueField: 'serverKey')
enum PayType with L10nKeyProvider {
none(l10nKey: '', serverKey: ''),

/// 시급
hour(l10nKey: 'hourlyWage', serverKey: 'HOURLY'),

Expand All @@ -19,4 +21,11 @@ enum PayType with L10nKeyProvider {
required this.l10nKey,
required this.serverKey,
});

/// None 여부
bool get isNone => this == PayType.none;

/// None을 제외한 값들
static List<PayType> get valuesWithoutNone =>
values.where((type) => type != none).toList();
}
1 change: 1 addition & 0 deletions lib/core/utils/mixins/mixins.dart
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export 'l10n_key_provider.dart';
export 'translatable.dart';
8 changes: 8 additions & 0 deletions lib/core/utils/mixins/translatable.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import 'package:easy_localization/easy_localization.dart' as easy;

/// Localization
mixin Translatable {
String get path;

String get tr => easy.tr('$path$this');
}
23 changes: 23 additions & 0 deletions lib/core/utils/resource/job_posting_validation_message.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import 'package:withu_app/core/core.dart';

/// 공고 관리 유효성 검사 메시지
enum JobPostingValidationMessage with Translatable {
title,
content,
category,
contractType,
contractStartDate,
contractEndDate,
workStartTime,
workEndTime,
participants,
payType,
payAmount,
address,
preferredQualification,
travelTimePaid,
breakTimePaid;

@override
String get path => 'validationMessage.jobPosting.';
}
1 change: 1 addition & 0 deletions lib/core/utils/resource/resource.dart
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export 'string_res.dart';
export 'job_posting_validation_message.dart';
1 change: 1 addition & 0 deletions lib/core/utils/utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ export 'theme/custom_theme.dart';
export 'resource/resource.dart';
export 'mixins/mixins.dart';
export 'either/either.dart';
export 'validation/validation.dart';
export 'bloc/bloc.dart';
export 'regex/regex.dart';
1 change: 1 addition & 0 deletions lib/core/utils/validation/validation.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export 'validation_result.dart';
28 changes: 28 additions & 0 deletions lib/core/utils/validation/validation_result.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/// 유효성 검사 결과
class ValidationResult {
/// 유효성 여부
final bool isValid;

/// 유효성 검사 실패 메시지
final String failMessage;

ValidationResult({
required this.isValid,
this.failMessage = '',
});

/// 검사 성공
factory ValidationResult.success() {
return ValidationResult(isValid: true);
}

/// 검사 실패
factory ValidationResult.fail({
required String message,
}) {
return ValidationResult(
isValid: false,
failMessage: message,
);
}
}
Loading

0 comments on commit e25111d

Please sign in to comment.