Skip to content

Commit

Permalink
feat(deriv_passkeys): [UPM-547] Deriv passkeys package (#425)
Browse files Browse the repository at this point in the history
  • Loading branch information
bassam-deriv authored May 20, 2024
1 parent a079975 commit c550917
Show file tree
Hide file tree
Showing 163 changed files with 8,023 additions and 1 deletion.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ lib/basic_api/generated/*.json
*.iws
.idea/

.fvm

# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
Expand Down
28 changes: 28 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -632,6 +632,34 @@ Packages with dependency updates only:
- **REFACTOR**(deriv_ui): update deriv_ui dependencies ([#499](https://github.com/regentmarkets/flutter-deriv-packages/issues/499)). ([2ade47f5](https://github.com/regentmarkets/flutter-deriv-packages/commit/2ade47f5f42a37325e4e4906c8c095fc26d777b6))


## 2024-02-29

### Changes

---

Packages with breaking changes:

- There are no breaking changes in this release.

Packages with other changes:

- [`deriv_ui` - `v0.0.6+4`](#deriv_ui---v0064)
- [`deriv_auth` - `v6.0.2`](#deriv_auth---v602)

Packages with dependency updates only:

> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
- `deriv_auth` - `v6.0.2`

---

#### `deriv_ui` - `v0.0.6+4`

- **REFACTOR**(deriv_ui): update deriv_ui dependencies ([#499](https://github.com/regentmarkets/flutter-deriv-packages/issues/499)). ([2ade47f5](https://github.com/regentmarkets/flutter-deriv-packages/commit/2ade47f5f42a37325e4e4906c8c095fc26d777b6))


## 2024-02-29

### Changes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"actionOk": "OK",
"warnNotAvailableCountries": "If you have any questions, contact us via ",
"labelLiveChat": "Live chat",
"actionGetAFreeAccount": "Get a free account",
"actionSignUpForFree": "Sign up for free",
"actionLogin": "Log in",
"labelTwoFactorAuth": "Two-factor authentication",
"informEnterTwoFactorAuthCode": "Enter the 6-digit code from the authenticator app on your phone.",
Expand Down
30 changes: 30 additions & 0 deletions packages/deriv_passkeys/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
migrate_working_dir/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/

# Flutter/Dart/Pub related
# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
/pubspec.lock
**/doc/api/
.dart_tool/
.packages
build/
33 changes: 33 additions & 0 deletions packages/deriv_passkeys/.metadata
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.

version:
revision: "ead455963c12b453cdb2358cad34969c76daf180"
channel: "stable"

project_type: plugin

# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: ead455963c12b453cdb2358cad34969c76daf180
base_revision: ead455963c12b453cdb2358cad34969c76daf180
- platform: android
create_revision: ead455963c12b453cdb2358cad34969c76daf180
base_revision: ead455963c12b453cdb2358cad34969c76daf180
- platform: ios
create_revision: ead455963c12b453cdb2358cad34969c76daf180
base_revision: ead455963c12b453cdb2358cad34969c76daf180

# User provided section

# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'
3 changes: 3 additions & 0 deletions packages/deriv_passkeys/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## 0.0.1

* TODO: Describe initial release.
1 change: 1 addition & 0 deletions packages/deriv_passkeys/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
TODO: Add your license here.
96 changes: 96 additions & 0 deletions packages/deriv_passkeys/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
# Deriv Passkeys

Deriv Passkeys is a Flutter plugin that allows you to generate passkeys for Deriv applications (based on WebAuthn).

## Features

This package contains everything you need to set up passkeys in your Deriv Flutter App:

* Android and iOS support
* Login with passkeys
* Create passkeys
* List passkeys

## Dependencies to Other Deriv Packages

* [flutter_deriv_api](https://github.com/deriv-com/flutter-deriv-api)
* [deriv_theme](https://github.com/regentmarkets/flutter-deriv-packages/tree/master/packages/deriv_theme)
* [deriv_ui](https://github.com/regentmarkets/flutter-deriv-packages/tree/master/packages/deriv_ui)

## Getting started

To use this package, add `deriv_passkeys` as a dependency in your pubspec.yaml file:

```yaml
dependencies:
deriv_passkeys:
git:
url: [email protected]:regentmarkets/flutter-deriv-packages.git
path: packages/deriv_passkeys
ref: deriv_passkeys-v0.0.1
```
### Android
No additional setup required.
### iOS
- Add the associated domains to your signing capabilities in Xcode:
- Add the following values to your associated domains:
- webcredentials:deriv.com
- applinks:deriv.com
## Usage
### Import the package
```dart
import 'package:deriv_passkeys/deriv_passkeys.dart';
```

### DerivPasskeysBloc:

```dart
final DerivPasskeysBloc derivPasskeysBloc = DerivPasskeysBloc(
getJwtToken: derivJwtService.getJwtToken,
derivPasskeysService: DerivPasskeysService(
DerivPasskeysRepository(
DerivPasskeysDataSource(
DerivPasskeysMapper(),
),
),
),
connectionInfo: PasskeysConnectionInfoEntity(
appId: FlavorConfig.instance.flavorValues.appId!,
endpoint: FlavorConfig.instance.flavorValues.endPoint!,
),
);
```

### ContinueWithPasskeyButton

```dart
ContinueWithPasskeyButton(
derivPasskeysBloc: context.read<DerivPasskeysBloc>(),
),
```

- This widget is used to continue with passkey.
- It requires `derivPasskeysBloc` as a parameter.
- It will return not show anything if the user's device does not support passkeys.
- When it's clicked it will either be successful or show an error message.
- in case of success the DerivPasskeysBloc will emit DerivPasskeysCredentialVerifiedState.
- The DerivPasskeysCredentialVerifiedState will contain the token which can be used to authenticate the user.
```dart
DerivPasskeysCredentialVerifiedState(
token: token,
),
```
120 changes: 120 additions & 0 deletions packages/deriv_passkeys/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
analyzer:
language:
strict-raw-types: true

linter:
rules:
- always_declare_return_types
- always_put_control_body_on_new_line
- always_put_required_named_parameters_first
- always_require_non_null_named_parameters
- always_specify_types
- annotate_overrides
- avoid_bool_literals_in_conditional_expressions
- avoid_catches_without_on_clauses
- avoid_empty_else
- avoid_equals_and_hash_code_on_mutable_classes
- avoid_field_initializers_in_const_classes
- avoid_function_literals_in_foreach_calls
- avoid_init_to_null
- avoid_null_checks_in_equality_operators
- avoid_positional_boolean_parameters
- avoid_print
- avoid_redundant_argument_values
- avoid_relative_lib_imports
- avoid_renaming_method_parameters
- avoid_return_types_on_setters
- avoid_returning_null
- avoid_returning_null_for_future
- avoid_returning_null_for_void
- avoid_setters_without_getters
- avoid_shadowing_type_parameters
- avoid_single_cascade_in_expression_statements
- avoid_slow_async_io
- avoid_types_as_parameter_names
- avoid_unnecessary_containers
- avoid_unused_constructor_parameters
- avoid_void_async
- await_only_futures
- camel_case_types
- cancel_subscriptions
- cascade_invocations
- close_sinks
- constant_identifier_names
- control_flow_in_finally
- curly_braces_in_flow_control_structures
- empty_catches
- empty_constructor_bodies
- empty_statements
- file_names
- flutter_style_todos
- hash_and_equals
- implementation_imports
- join_return_with_assignment
- library_names
- library_prefixes
- no_adjacent_strings_in_list
- no_duplicate_case_values
- non_constant_identifier_names
- null_closures
- only_throw_errors
- overridden_fields
- package_api_docs
- package_names
- package_prefixed_library_names
- parameter_assignments
- prefer_adjacent_string_concatenation
- prefer_asserts_in_initializer_lists
- prefer_collection_literals
- prefer_conditional_assignment
- prefer_const_constructors
- prefer_const_constructors_in_immutables
- prefer_const_declarations
- prefer_const_literals_to_create_immutables
- prefer_constructors_over_static_methods
- prefer_contains
- prefer_expression_function_bodies
- prefer_final_fields
- prefer_final_in_for_each
- prefer_final_locals
- prefer_foreach
- prefer_function_declarations_over_variables
- prefer_generic_function_type_aliases
- prefer_initializing_formals
- prefer_int_literals
- prefer_interpolation_to_compose_strings
- prefer_is_empty
- prefer_is_not_empty
- prefer_iterable_whereType
- prefer_mixin
- prefer_single_quotes
- prefer_typing_uninitialized_variables
- prefer_void_to_null
- public_member_api_docs
- recursive_getters
- slash_for_doc_comments
- sort_constructors_first
- sort_unnamed_constructors_first
- test_types_in_equals
- throw_in_finally
- type_init_formals
- unawaited_futures
- unnecessary_await_in_return
- unnecessary_brace_in_string_interps
- unnecessary_const
- unnecessary_getters_setters
- unnecessary_new
- unnecessary_null_aware_assignments
- unnecessary_null_in_if_null_operators
- unnecessary_overrides
- unnecessary_parenthesis
- unnecessary_statements
- unnecessary_this
- unrelated_type_equality_checks
- use_function_type_syntax_for_parameters
- use_rethrow_when_possible
- use_setters_to_change_properties
- use_string_buffers
- use_to_and_as_if_applicable
- valid_regexps
- void_checks
9 changes: 9 additions & 0 deletions packages/deriv_passkeys/android/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures
.cxx
Loading

0 comments on commit c550917

Please sign in to comment.