Commit 1b429a31 authored by Thomas's avatar Thomas
Browse files

Fix authentication

parent 82a5bfeb
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ package app.fedilab.android.peertube.activities;
 * You should have received a copy of the GNU General Public License along with TubeLab; if not,
 * see <http://www.gnu.org/licenses>. */

import static app.fedilab.android.mastodon.helper.Helper.TAG;
import static app.fedilab.android.peertube.client.RetrofitPeertubeAPI.updateCredential;

import android.annotation.SuppressLint;
@@ -24,6 +25,7 @@ import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import android.text.style.UnderlineSpan;
import android.util.Log;
import android.util.Patterns;
import android.view.MenuItem;
import android.view.View;
@@ -161,7 +163,8 @@ public class LoginActivity extends BaseBarActivity {
        }
        client_id = oauth.getClient_id();
        client_secret = oauth.getClient_secret();

        Log.v(TAG, "client_id: " + client_id);
        Log.v(TAG, "client_secret: " + client_secret);
        SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedpreferences.edit();
        editor.putString(Helper.CLIENT_ID, client_id);
@@ -180,6 +183,7 @@ public class LoginActivity extends BaseBarActivity {
        }
        try {
            Token token = new RetrofitPeertubeAPI(LoginActivity.this, finalInstance, null).manageToken(oauthParams);
            Log.v(TAG, "token: " + token);
            proceedLogin(token, finalInstance);
        } catch (final Exception e) {
            oauthParams.setUsername(binding.loginUid.getText().toString().toLowerCase().trim());
@@ -191,6 +195,11 @@ public class LoginActivity extends BaseBarActivity {
            }
            proceedLogin(token, finalInstance);
        } catch (Error e) {
            runOnUiThread(() -> {
                Toasty.error(LoginActivity.this, e.getError() != null && !e.getError().isEmpty() ? e.getError() : getString(R.string.toast_error), Toasty.LENGTH_SHORT).show();
                binding.loginButton.setEnabled(true);
            });

            e.printStackTrace();
        }
    }
+8 −3
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;

import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.kobakei.ratethisapp.RateThisApp;

import org.jetbrains.annotations.NotNull;

@@ -59,6 +60,7 @@ import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import app.fedilab.android.BuildConfig;
import app.fedilab.android.R;
import app.fedilab.android.activities.AboutActivity;
import app.fedilab.android.activities.PeertubeBaseMainActivity;
@@ -89,7 +91,7 @@ import app.fedilab.android.sqlite.Sqlite;
import es.dmoral.toasty.Toasty;


public abstract class PeertubeMainActivity extends PeertubeBaseMainActivity {
public class PeertubeMainActivity extends PeertubeBaseMainActivity {


    public static int PICK_INSTANCE = 5641;
@@ -188,7 +190,6 @@ public abstract class PeertubeMainActivity extends PeertubeBaseMainActivity {
        alert.show();
    }

    protected abstract void rateThisApp();

    private void setTitleCustom(int titleRId) {
        Toolbar toolbar = findViewById(R.id.toolbar);
@@ -313,7 +314,11 @@ public abstract class PeertubeMainActivity extends PeertubeBaseMainActivity {
        peertubeInformation.setTranslations(new LinkedHashMap<>());
        startInForeground();

        rateThisApp();
        //noinspection ConstantConditions
        if (BuildConfig.FLAVOR.compareTo("playstore") == 0) {
            RateThisApp.onCreate(this);
            RateThisApp.showRateDialogIfNeeded(this);
        }


        final SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
+7 −3
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package app.fedilab.android.peertube.client;
import static app.fedilab.android.mastodon.helper.Helper.PREF_INSTANCE;
import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_ID;
import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_TOKEN;
import static app.fedilab.android.mastodon.helper.Helper.TAG;

import android.app.Activity;
import android.content.Context;
@@ -26,6 +27,7 @@ import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.webkit.MimeTypeMap;
import android.webkit.URLUtil;

@@ -156,6 +158,7 @@ public class RetrofitPeertubeAPI {
            String instance = host;
            try {
                UserMe userMe = new RetrofitPeertubeAPI(activity, instance, token).verifyCredentials();
                Log.v(TAG, "userMe: " + userMe);
                peertubeAccount = userMe.getAccount();
            } catch (Error error) {
                Error.displayError(activity, error);
@@ -173,6 +176,7 @@ public class RetrofitPeertubeAPI {
            account.client_secret = client_secret;
            account.refresh_token = refresh_token;
            account.instance = instance;
            account.api = Account.API.PEERTUBE;
            account.peertube_account = peertubeAccount;
            SQLiteDatabase db = Sqlite.getInstance(activity.getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
            boolean userExists = false;
@@ -238,14 +242,13 @@ public class RetrofitPeertubeAPI {
    public Token manageToken(OauthParams oauthParams) throws Error {
        PeertubeService peertubeService = init();
        Call<Token> refreshTokenCall = null;
        if (oauthParams.getExternalAuthToken() != null) {
            refreshTokenCall = peertubeService.createOpenIdToken(oauthParams.getClient_id(), oauthParams.getClient_secret(), oauthParams.getResponse_type(), oauthParams.getGrant_type(), oauthParams.getScope(), oauthParams.getUsername(), oauthParams.getPassword(), oauthParams.getExternalAuthToken());
        } else if (oauthParams.getGrant_type().compareTo("password") == 0) {
        if (oauthParams.getGrant_type().compareTo("password") == 0) {
            refreshTokenCall = peertubeService.createToken(oauthParams.getClient_id(), oauthParams.getClient_secret(), oauthParams.getGrant_type(), oauthParams.getUsername(), oauthParams.getPassword());
        } else if (oauthParams.getGrant_type().compareTo("refresh_token") == 0) {
            refreshTokenCall = peertubeService.refreshToken(oauthParams.getClient_id(), oauthParams.getClient_secret(), oauthParams.getRefresh_token(), oauthParams.getGrant_type());
        }
        if (refreshTokenCall != null) {
            Log.v(TAG, "request: " + refreshTokenCall.request());
            try {
                Response<Token> response = refreshTokenCall.execute();
                if (response.isSuccessful()) {
@@ -264,6 +267,7 @@ public class RetrofitPeertubeAPI {
                } else {
                    Error error = new Error();
                    error.setStatusCode(response.code());
                    Log.v(TAG, "err: " + response.errorBody().string());
                    if (response.errorBody() != null) {
                        error.setError(response.errorBody().string());
                    } else {
+13 −5
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ public class UserMe {
    @SerializedName("nsfwPolicy")
    private String nsfwPolicy;
    @SerializedName("role")
    private int role;
    private Role role;
    @SerializedName("roleLabel")
    private String roleLabel;
    @SerializedName("username")
@@ -74,6 +74,11 @@ public class UserMe {
    @SerializedName("webTorrentEnabled")
    private boolean webTorrentEnabled;

    public Role getRole() {
        return role;
    }


    public PeertubeAccount getAccount() {
        return account;
    }
@@ -186,12 +191,15 @@ public class UserMe {
        this.nsfwPolicy = nsfwPolicy;
    }

    public int getRole() {
        return role;
    public void setRole(Role role) {
        this.role = role;
    }

    public void setRole(int role) {
        this.role = role;
    public static class Role {
        @SerializedName("id")
        String id;
        @SerializedName("label")
        String label;
    }

    public String getRoleLabel() {
+5 −3
Original line number Diff line number Diff line
@@ -115,7 +115,6 @@ public class Helper {
    public static final String REDIRECT_CONTENT_WEB = "tubelab://backtotubelab";
    public static final int DEFAULT_VIDEO_CACHE_MB = 100;
    @SuppressWarnings({"unused", "RedundantSuppression"})
    public static final String TAG = "TubeLab";
    public static final String ID = "id";
    public static final String CLIENT_ID = "client_id";
    public static final String CLIENT_SECRET = "client_secret";
@@ -668,11 +667,14 @@ public class Helper {

    public static boolean isVideoOwner(Context context, VideoData.Video video) {
        SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
        String userId = sharedpreferences.getString(PREF_USER_ID, "");
        String instance = sharedpreferences.getString(PREF_INSTANCE, "");
        String userId = sharedpreferences.getString(PREF_USER_ID, null);
        String instance = sharedpreferences.getString(PREF_INSTANCE, null);
        if (video == null) {
            return false;
        }
        if (userId == null || instance == null) {
            return false;
        }
        AccountData.PeertubeAccount account = video.getAccount();
        ChannelData.Channel channel = video.getChannel();
        if (account != null) {