@@ -15,93 +15,11 @@ internal async void UpdateSessionData(LocalStorage.DataStorage data)
15
15
await this . _localStorage . SaveDataAsync ( data ) . ConfigureAwait ( false ) ;
16
16
}
17
17
18
- internal async Task < VerifyResult > PostAuthSetup ( Server . VerifyResult result , string twManagedRecoveryCodeOverride , string authProvider )
19
- {
20
- var mainRecoveryCode = ( twManagedRecoveryCodeOverride ?? result . RecoveryCode ) ?? throw new InvalidOperationException ( "Server failed to return recovery code." ) ;
21
-
22
- ( var account , var deviceShare ) = result . IsNewUser
23
- ? await this . CreateAccountAsync ( result . AuthToken , mainRecoveryCode ) . ConfigureAwait ( false )
24
- : await this . RecoverAccountAsync ( result . AuthToken , mainRecoveryCode ) . ConfigureAwait ( false ) ;
25
- var user = this . MakeUserAsync ( result . Email , result . PhoneNumber , account , result . AuthToken , result . WalletUserId , deviceShare , authProvider , result . AuthIdentifier ) ;
26
- return new VerifyResult ( user , mainRecoveryCode ) ;
27
- }
28
-
29
18
public async Task SignOutAsync ( )
30
19
{
31
- this . _user = null ;
32
20
await this . _localStorage . SaveDataAsync ( new LocalStorage . DataStorage ( null , null , null , null , null , null , null ) ) . ConfigureAwait ( false ) ;
33
21
}
34
22
35
- public async Task < User > GetUserAsync ( string email , string phone , string authProvider )
36
- {
37
- email = email ? . ToLower ( ) ;
38
-
39
- if ( this . _user != null )
40
- {
41
- return this . _user ;
42
- }
43
- else if ( this . _localStorage . Data ? . AuthToken == null )
44
- {
45
- throw new InvalidOperationException ( "User is not signed in" ) ;
46
- }
47
-
48
- var userWallet = await this . _server . FetchUserDetailsAsync ( null , this . _localStorage . Data . AuthToken ) . ConfigureAwait ( false ) ;
49
- switch ( userWallet . Status )
50
- {
51
- case "Logged Out" :
52
- throw new InvalidOperationException ( "User is logged out" ) ;
53
- case "Logged In, Wallet Uninitialized" :
54
- throw new InvalidOperationException ( "User is logged in but wallet is uninitialized" ) ;
55
- case "Logged In, Wallet Initialized" :
56
- if ( string . IsNullOrEmpty ( this . _localStorage . Data ? . DeviceShare ) )
57
- {
58
- throw new InvalidOperationException ( "User is logged in but wallet is uninitialized" ) ;
59
- }
60
-
61
- var authShare = await this . _server . FetchAuthShareAsync ( this . _localStorage . Data . AuthToken ) . ConfigureAwait ( false ) ;
62
- var emailAddress = userWallet . StoredToken ? . AuthDetails . Email ;
63
- var phoneNumber = userWallet . StoredToken ? . AuthDetails . PhoneNumber ;
64
-
65
- if ( ( email != null && email != emailAddress ) || ( phone != null && phone != phoneNumber ) )
66
- {
67
- throw new InvalidOperationException ( "User email or phone number do not match" ) ;
68
- }
69
- else if ( email == null && this . _localStorage . Data . AuthProvider != authProvider )
70
- {
71
- throw new InvalidOperationException ( $ "User auth provider does not match. Expected { this . _localStorage . Data . AuthProvider } , got { authProvider } ") ;
72
- }
73
- else if ( authShare == null )
74
- {
75
- throw new InvalidOperationException ( "Server failed to return auth share" ) ;
76
- }
77
-
78
- this . _user = new User ( MakeAccountFromShares ( new [ ] { authShare , this . _localStorage . Data . DeviceShare } ) , emailAddress , phoneNumber ) ;
79
- return this . _user ;
80
- default :
81
- break ;
82
- }
83
- throw new InvalidOperationException ( $ "Unexpected user status '{ userWallet . Status } '") ;
84
- }
85
-
86
- private User MakeUserAsync ( string emailAddress , string phoneNumber , Account account , string authToken , string walletUserId , string deviceShare , string authProvider , string authIdentifier )
87
- {
88
- var data = new LocalStorage . DataStorage ( authToken , deviceShare , emailAddress , phoneNumber , walletUserId , authProvider , authIdentifier ) ;
89
- this . UpdateSessionData ( data ) ;
90
- this . _user = new User ( account , emailAddress , phoneNumber ) ;
91
- return this . _user ;
92
- }
93
-
94
- private async Task < ( Account account , string deviceShare ) > CreateAccountAsync ( string authToken , string recoveryCode )
95
- {
96
- var secret = Secrets . Random ( KEY_SIZE ) ;
97
-
98
- ( var deviceShare , var recoveryShare , var authShare ) = CreateShares ( secret ) ;
99
- var encryptedRecoveryShare = await this . EncryptShareAsync ( recoveryShare , recoveryCode ) . ConfigureAwait ( false ) ;
100
- Account account = new ( secret ) ;
101
- await this . _server . StoreAddressAndSharesAsync ( account . Address , authShare , encryptedRecoveryShare , authToken ) . ConfigureAwait ( false ) ;
102
- return ( account , deviceShare ) ;
103
- }
104
-
105
23
internal async Task < ( Account account , string deviceShare ) > RecoverAccountAsync ( string authToken , string recoveryCode )
106
24
{
107
25
( var authShare , var encryptedRecoveryShare ) = await this . _server . FetchAuthAndRecoverySharesAsync ( authToken ) . ConfigureAwait ( false ) ;
0 commit comments