Fix authentication issue

This commit is contained in:
Thomas 2022-06-22 15:35:08 +02:00
parent 5ddc756440
commit 4c375cfe4a

View file

@ -52,6 +52,7 @@ public class LoginActivity extends BaseActivity {
private boolean requestedAdmin; private boolean requestedAdmin;
private void manageItent(Intent intent) { private void manageItent(Intent intent) {
if (intent != null && intent.getData() != null && intent.getData().toString().contains(REDIRECT_CONTENT_WEB + "?code=")) { if (intent != null && intent.getData() != null && intent.getData().toString().contains(REDIRECT_CONTENT_WEB + "?code=")) {
String url = intent.getData().toString(); String url = intent.getData().toString();
Matcher matcher = Helper.codePattern.matcher(url); Matcher matcher = Helper.codePattern.matcher(url);
@ -61,38 +62,35 @@ public class LoginActivity extends BaseActivity {
} }
String code = matcher.group(1); String code = matcher.group(1);
OauthVM oauthVM = new ViewModelProvider(LoginActivity.this).get(OauthVM.class); OauthVM oauthVM = new ViewModelProvider(LoginActivity.this).get(OauthVM.class);
//We are dealing with a Mastodon API //We are dealing with a Mastodon API
if (apiLogin == Account.API.MASTODON) { //API call to get the user token
//API call to get the user token String scope = requestedAdmin ? Helper.OAUTH_SCOPES_ADMIN : Helper.OAUTH_SCOPES;
String scope = requestedAdmin ? Helper.OAUTH_SCOPES_ADMIN : Helper.OAUTH_SCOPES; oauthVM.createToken(currentInstanceLogin, "authorization_code", client_idLogin, client_secretLogin, Helper.REDIRECT_CONTENT_WEB, scope, code)
oauthVM.createToken(currentInstanceLogin, "authorization_code", client_idLogin, client_secretLogin, Helper.REDIRECT_CONTENT_WEB, scope, code) .observe(LoginActivity.this, tokenObj -> {
.observe(LoginActivity.this, tokenObj -> { Account account = new Account();
Account account = new Account(); account.client_id = client_idLogin;
account.client_id = client_idLogin; account.client_secret = client_secretLogin;
account.client_secret = client_secretLogin; account.token = tokenObj.token_type + " " + tokenObj.access_token;
account.token = tokenObj.token_type + " " + tokenObj.access_token; account.api = apiLogin;
account.api = apiLogin; account.software = softwareLogin;
account.software = softwareLogin; account.instance = currentInstanceLogin;
account.instance = currentInstanceLogin; //API call to retrieve account information for the new token
//API call to retrieve account information for the new token AccountsVM accountsVM = new ViewModelProvider(LoginActivity.this).get(AccountsVM.class);
AccountsVM accountsVM = new ViewModelProvider(LoginActivity.this).get(AccountsVM.class); accountsVM.getConnectedAccount(currentInstanceLogin, account.token).observe(LoginActivity.this, mastodonAccount -> {
accountsVM.getConnectedAccount(currentInstanceLogin, account.token).observe(LoginActivity.this, mastodonAccount -> { account.mastodon_account = mastodonAccount;
account.mastodon_account = mastodonAccount; account.user_id = mastodonAccount.id;
account.user_id = mastodonAccount.id; //We check if user have really moderator rights
//We check if user have really moderator rights if (requestedAdmin) {
if (requestedAdmin) { AdminVM adminVM = new ViewModelProvider(LoginActivity.this).get(AdminVM.class);
AdminVM adminVM = new ViewModelProvider(LoginActivity.this).get(AdminVM.class); adminVM.getAccount(account.instance, account.token, account.user_id).observe(LoginActivity.this, adminAccount -> {
adminVM.getAccount(account.instance, account.token, account.user_id).observe(LoginActivity.this, adminAccount -> { account.admin = adminAccount != null;
account.admin = adminAccount != null;
WebviewConnectActivity.proceedLogin(LoginActivity.this, account);
});
} else {
WebviewConnectActivity.proceedLogin(LoginActivity.this, account); WebviewConnectActivity.proceedLogin(LoginActivity.this, account);
} });
}); } else {
WebviewConnectActivity.proceedLogin(LoginActivity.this, account);
}
}); });
} });
} }
} }