Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
AloqaIM-Android
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
AloqaIM-Android
Commits
30254dde
Commit
30254dde
authored
Apr 18, 2017
by
Tiago Cunha
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
2FA worked out
parent
3671697f
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
108 additions
and
7 deletions
+108
-7
MethodCallHelper.java
...c/main/java/chat/rocket/android/api/MethodCallHelper.java
+28
-1
LoginFragment.java
.../rocket/android/fragment/server_config/LoginFragment.java
+7
-3
TwoStepAuthFragment.java
...t/android/fragment/server_config/TwoStepAuthFragment.java
+50
-3
TwoStepAuthPresenter.java
.../android/fragment/server_config/TwoStepAuthPresenter.java
+23
-0
No files found.
app/src/main/java/chat/rocket/android/api/MethodCallHelper.java
View file @
30254dde
...
@@ -84,7 +84,7 @@ public class MethodCallHelper {
...
@@ -84,7 +84,7 @@ public class MethodCallHelper {
if
(
TextUtils
.
isEmpty
(
errMessageJson
))
{
if
(
TextUtils
.
isEmpty
(
errMessageJson
))
{
return
Task
.
forError
(
exception
);
return
Task
.
forError
(
exception
);
}
}
String
errType
=
new
JSONObject
(
errMessageJson
).
ge
tString
(
"error"
);
String
errType
=
new
JSONObject
(
errMessageJson
).
op
tString
(
"error"
);
String
errMessage
=
new
JSONObject
(
errMessageJson
).
getString
(
"message"
);
String
errMessage
=
new
JSONObject
(
errMessageJson
).
getString
(
"message"
);
if
(
TwoStepAuthException
.
TYPE
.
equals
(
errType
))
{
if
(
TwoStepAuthException
.
TYPE
.
equals
(
errType
))
{
...
@@ -220,6 +220,33 @@ public class MethodCallHelper {
...
@@ -220,6 +220,33 @@ public class MethodCallHelper {
});
});
}
}
public
Task
<
Void
>
twoStepCodeLogin
(
final
String
usernameOrEmail
,
final
String
password
,
final
String
twoStepCode
)
{
return
call
(
"login"
,
TIMEOUT_MS
,
()
->
{
JSONObject
loginParam
=
new
JSONObject
();
if
(
Patterns
.
EMAIL_ADDRESS
.
matcher
(
usernameOrEmail
).
matches
())
{
loginParam
.
put
(
"user"
,
new
JSONObject
().
put
(
"email"
,
usernameOrEmail
));
}
else
{
loginParam
.
put
(
"user"
,
new
JSONObject
().
put
(
"username"
,
usernameOrEmail
));
}
loginParam
.
put
(
"password"
,
new
JSONObject
()
.
put
(
"digest"
,
CheckSum
.
sha256
(
password
))
.
put
(
"algorithm"
,
"sha-256"
));
JSONObject
twoStepParam
=
new
JSONObject
();
twoStepParam
.
put
(
"login"
,
loginParam
);
twoStepParam
.
put
(
"code"
,
twoStepCode
);
JSONObject
param
=
new
JSONObject
();
param
.
put
(
"totp"
,
twoStepParam
);
return
new
JSONArray
().
put
(
param
);
}).
onSuccessTask
(
CONVERT_TO_JSON_OBJECT
)
.
onSuccessTask
(
task
->
Task
.
forResult
(
task
.
getResult
().
getString
(
"token"
)))
.
onSuccessTask
(
this
::
saveToken
);
}
/**
/**
* Logout.
* Logout.
*/
*/
...
...
app/src/main/java/chat/rocket/android/fragment/server_config/LoginFragment.java
View file @
30254dde
...
@@ -26,6 +26,8 @@ public class LoginFragment extends AbstractServerConfigFragment implements Login
...
@@ -26,6 +26,8 @@ public class LoginFragment extends AbstractServerConfigFragment implements Login
private
View
btnEmail
;
private
View
btnEmail
;
private
View
waitingView
;
private
View
waitingView
;
private
TextView
txtUsername
;
private
TextView
txtPasswd
;
@Override
@Override
protected
int
getLayout
()
{
protected
int
getLayout
()
{
...
@@ -46,8 +48,8 @@ public class LoginFragment extends AbstractServerConfigFragment implements Login
...
@@ -46,8 +48,8 @@ public class LoginFragment extends AbstractServerConfigFragment implements Login
@Override
@Override
protected
void
onSetupView
()
{
protected
void
onSetupView
()
{
btnEmail
=
rootView
.
findViewById
(
R
.
id
.
btn_login_with_email
);
btnEmail
=
rootView
.
findViewById
(
R
.
id
.
btn_login_with_email
);
final
TextView
txtUsername
=
(
TextView
)
rootView
.
findViewById
(
R
.
id
.
editor_username
);
txtUsername
=
(
TextView
)
rootView
.
findViewById
(
R
.
id
.
editor_username
);
final
TextView
txtPasswd
=
(
TextView
)
rootView
.
findViewById
(
R
.
id
.
editor_passwd
);
txtPasswd
=
(
TextView
)
rootView
.
findViewById
(
R
.
id
.
editor_passwd
);
waitingView
=
rootView
.
findViewById
(
R
.
id
.
waiting
);
waitingView
=
rootView
.
findViewById
(
R
.
id
.
waiting
);
btnEmail
.
setOnClickListener
(
btnEmail
.
setOnClickListener
(
view
->
presenter
.
login
(
txtUsername
.
getText
().
toString
(),
txtPasswd
.
getText
().
toString
()));
view
->
presenter
.
login
(
txtUsername
.
getText
().
toString
(),
txtPasswd
.
getText
().
toString
()));
...
@@ -117,7 +119,9 @@ public class LoginFragment extends AbstractServerConfigFragment implements Login
...
@@ -117,7 +119,9 @@ public class LoginFragment extends AbstractServerConfigFragment implements Login
@Override
@Override
public
void
showTwoStepAuth
()
{
public
void
showTwoStepAuth
()
{
showFragmentWithBackStack
(
TwoStepAuthFragment
.
create
(
hostname
));
showFragmentWithBackStack
(
TwoStepAuthFragment
.
create
(
hostname
,
txtUsername
.
getText
().
toString
(),
txtPasswd
.
getText
().
toString
()
));
}
}
@Override
@Override
...
...
app/src/main/java/chat/rocket/android/fragment/server_config/TwoStepAuthFragment.java
View file @
30254dde
package
chat
.
rocket
.
android
.
fragment
.
server_config
;
package
chat
.
rocket
.
android
.
fragment
.
server_config
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.support.annotation.Nullable
;
import
android.support.design.widget.Snackbar
;
import
android.view.View
;
import
android.view.View
;
import
android.widget.TextView
;
import
android.widget.TextView
;
import
chat.rocket.android.R
;
import
chat.rocket.android.R
;
import
chat.rocket.android.api.MethodCallHelper
;
public
class
TwoStepAuthFragment
extends
AbstractServerConfigFragment
public
class
TwoStepAuthFragment
extends
AbstractServerConfigFragment
implements
TwoStepAuthContract
.
View
{
implements
TwoStepAuthContract
.
View
{
private
static
final
String
ARG_USERNAME_OR_EMAIL
=
"usernameOrEmail"
;
private
static
final
String
ARG_PASSWORD
=
"password"
;
private
View
waitingView
;
private
View
waitingView
;
private
View
submitButton
;
private
TwoStepAuthContract
.
Presenter
presenter
;
private
TwoStepAuthContract
.
Presenter
presenter
;
public
static
TwoStepAuthFragment
create
(
String
hostname
)
{
public
static
TwoStepAuthFragment
create
(
String
hostname
,
String
usernameOrEmail
,
String
password
)
{
Bundle
args
=
new
Bundle
();
Bundle
args
=
new
Bundle
();
args
.
putString
(
AbstractServerConfigFragment
.
KEY_HOSTNAME
,
hostname
);
args
.
putString
(
AbstractServerConfigFragment
.
KEY_HOSTNAME
,
hostname
);
args
.
putString
(
ARG_USERNAME_OR_EMAIL
,
usernameOrEmail
);
args
.
putString
(
ARG_PASSWORD
,
password
);
TwoStepAuthFragment
fragment
=
new
TwoStepAuthFragment
();
TwoStepAuthFragment
fragment
=
new
TwoStepAuthFragment
();
fragment
.
setArguments
(
args
);
fragment
.
setArguments
(
args
);
...
@@ -23,16 +33,51 @@ public class TwoStepAuthFragment extends AbstractServerConfigFragment
...
@@ -23,16 +33,51 @@ public class TwoStepAuthFragment extends AbstractServerConfigFragment
return
fragment
;
return
fragment
;
}
}
@Override
public
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
Bundle
args
=
getArguments
();
if
(
args
==
null
||
!
args
.
containsKey
(
ARG_USERNAME_OR_EMAIL
)
||
!
args
.
containsKey
(
ARG_PASSWORD
))
{
finish
();
return
;
}
presenter
=
new
TwoStepAuthPresenter
(
new
MethodCallHelper
(
getContext
(),
hostname
),
args
.
getString
(
ARG_USERNAME_OR_EMAIL
),
args
.
getString
(
ARG_PASSWORD
)
);
}
@Override
public
void
onResume
()
{
super
.
onResume
();
presenter
.
bindView
(
this
);
}
@Override
public
void
onPause
()
{
presenter
.
release
();
super
.
onPause
();
}
@Override
@Override
public
void
showLoading
()
{
public
void
showLoading
()
{
submitButton
.
setEnabled
(
false
);
waitingView
.
setVisibility
(
View
.
VISIBLE
);
}
}
@Override
@Override
public
void
hideLoading
()
{
public
void
hideLoading
()
{
waitingView
.
setVisibility
(
View
.
GONE
);
submitButton
.
setEnabled
(
true
);
}
}
@Override
@Override
public
void
showError
(
String
message
)
{
public
void
showError
(
String
message
)
{
Snackbar
.
make
(
rootView
,
message
,
Snackbar
.
LENGTH_LONG
).
show
();
}
}
@Override
@Override
...
@@ -46,7 +91,9 @@ public class TwoStepAuthFragment extends AbstractServerConfigFragment
...
@@ -46,7 +91,9 @@ public class TwoStepAuthFragment extends AbstractServerConfigFragment
final
TextView
twoStepCodeTextView
=
(
TextView
)
rootView
.
findViewById
(
R
.
id
.
two_step_code
);
final
TextView
twoStepCodeTextView
=
(
TextView
)
rootView
.
findViewById
(
R
.
id
.
two_step_code
);
final
View
submit
=
rootView
.
findViewById
(
R
.
id
.
btn_two_step_login
);
submitButton
=
rootView
.
findViewById
(
R
.
id
.
btn_two_step_login
);
submit
.
setOnClickListener
(
view
->
{});
submitButton
.
setOnClickListener
(
view
->
{
presenter
.
onCode
(
twoStepCodeTextView
.
getText
().
toString
());
});
}
}
}
}
app/src/main/java/chat/rocket/android/fragment/server_config/TwoStepAuthPresenter.java
View file @
30254dde
package
chat
.
rocket
.
android
.
fragment
.
server_config
;
package
chat
.
rocket
.
android
.
fragment
.
server_config
;
import
chat.rocket.android.api.MethodCallHelper
;
import
chat.rocket.android.shared.BasePresenter
;
import
chat.rocket.android.shared.BasePresenter
;
public
class
TwoStepAuthPresenter
extends
BasePresenter
<
TwoStepAuthContract
.
View
>
public
class
TwoStepAuthPresenter
extends
BasePresenter
<
TwoStepAuthContract
.
View
>
implements
TwoStepAuthContract
.
Presenter
{
implements
TwoStepAuthContract
.
Presenter
{
private
final
MethodCallHelper
methodCallHelper
;
private
final
String
usernameOrEmail
;
private
final
String
password
;
public
TwoStepAuthPresenter
(
MethodCallHelper
methodCallHelper
,
String
usernameOrEmail
,
String
password
)
{
this
.
methodCallHelper
=
methodCallHelper
;
this
.
usernameOrEmail
=
usernameOrEmail
;
this
.
password
=
password
;
}
@Override
@Override
public
void
onCode
(
String
twoStepAuthCode
)
{
public
void
onCode
(
String
twoStepAuthCode
)
{
view
.
showLoading
();
methodCallHelper
.
twoStepCodeLogin
(
usernameOrEmail
,
password
,
twoStepAuthCode
)
.
continueWith
(
task
->
{
if
(
task
.
isFaulted
())
{
view
.
hideLoading
();
view
.
showError
(
task
.
getError
().
getMessage
());
}
return
null
;
});
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment