Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e84c98ad authored by Fahim Salam Chowdhury's avatar Fahim Salam Chowdhury 👽
Browse files

Sanitize userId for imageUrl

parent a2adc0dd
Loading
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import it.niedermann.owncloud.notes.databinding.DialogAccountSwitcherBinding;
import it.niedermann.owncloud.notes.manageaccounts.ManageAccountsActivity;
import it.niedermann.owncloud.notes.persistence.NotesRepository;
import it.niedermann.owncloud.notes.persistence.entity.Account;
import it.niedermann.owncloud.notes.shared.util.SSOUtil;

/**
 * Displays all available {@link Account} entries and provides basic operations for them, like adding or switching
@@ -67,7 +68,7 @@ public class AccountSwitcherDialog extends BrandedDialogFragment {
            binding.accountName.setText(currentLocalAccount.getDisplayName());
            binding.accountHost.setText(Uri.parse(currentLocalAccount.getUrl()).getHost());
            Glide.with(requireContext())
                    .load(currentLocalAccount.getUrl() + "/index.php/avatar/" + Uri.encode(currentLocalAccount.getUserName()) + "/64")
                    .load(currentLocalAccount.getUrl() + "/index.php/avatar/" + Uri.encode(SSOUtil.sanitizeUserId(currentLocalAccount.getUserName())) + "/64")
                    .error(R.drawable.ic_account_circle_grey_24dp)
                    .apply(RequestOptions.circleCropTransform())
                    .into(binding.currentAccountItemAvatar);
+2 −1
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ import it.niedermann.nextcloud.sso.glide.SingleSignOnUrl;
import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.databinding.ItemAccountChooseBinding;
import it.niedermann.owncloud.notes.persistence.entity.Account;
import it.niedermann.owncloud.notes.shared.util.SSOUtil;

public class AccountSwitcherViewHolder extends RecyclerView.ViewHolder {

@@ -28,7 +29,7 @@ public class AccountSwitcherViewHolder extends RecyclerView.ViewHolder {
        binding.accountName.setText(localAccount.getDisplayName());
        binding.accountHost.setText(Uri.parse(localAccount.getUrl()).getHost());
        Glide.with(itemView.getContext())
                .load(new SingleSignOnUrl(localAccount.getAccountName(), localAccount.getUrl() + "/index.php/avatar/" + Uri.encode(localAccount.getUserName()) + "/64"))
                .load(new SingleSignOnUrl(localAccount.getAccountName(), localAccount.getUrl() + "/index.php/avatar/" + Uri.encode(SSOUtil.sanitizeUserId(localAccount.getUserName())) + "/64"))
                .placeholder(R.drawable.ic_account_circle_grey_24dp)
                .error(R.drawable.ic_account_circle_grey_24dp)
                .apply(RequestOptions.circleCropTransform())
+2 −1
Original line number Diff line number Diff line
@@ -93,6 +93,7 @@ import it.niedermann.owncloud.notes.shared.model.NavigationCategory;
import it.niedermann.owncloud.notes.shared.model.NoteClickListener;
import it.niedermann.owncloud.notes.shared.util.CustomAppGlideModule;
import it.niedermann.owncloud.notes.shared.util.NoteUtil;
import it.niedermann.owncloud.notes.shared.util.SSOUtil;
import it.niedermann.owncloud.notes.shared.util.ShareUtil;
import trikita.log.Log;

@@ -307,7 +308,7 @@ public class MainActivity extends LockedActivity implements NoteClickListener, A
            fabCreate.hide();
            Glide
                    .with(this)
                    .load(nextAccount.getUrl() + "/index.php/avatar/" + Uri.encode(nextAccount.getUserName()) + "/64")
                    .load(nextAccount.getUrl() + "/index.php/avatar/" + Uri.encode(SSOUtil.sanitizeUserId(nextAccount.getUserName())) + "/64")
                    .placeholder(R.drawable.ic_account_circle_grey_24dp)
                    .error(R.drawable.ic_account_circle_grey_24dp)
                    .apply(RequestOptions.circleCropTransform())
+2 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.databinding.ItemAccountChooseBinding;
import it.niedermann.owncloud.notes.persistence.entity.Account;
import it.niedermann.owncloud.notes.shared.util.AccountSyncUtil;
import it.niedermann.owncloud.notes.shared.util.SSOUtil;

public class ManageAccountViewHolder extends RecyclerView.ViewHolder {

@@ -39,7 +40,7 @@ public class ManageAccountViewHolder extends RecyclerView.ViewHolder {
        binding.accountName.setText(localAccount.getUserName());
        binding.accountHost.setText(Uri.parse(localAccount.getUrl()).getHost());
        Glide.with(itemView.getContext())
                .load(new SingleSignOnUrl(localAccount.getAccountName(), localAccount.getUrl() + "/index.php/avatar/" + Uri.encode(localAccount.getUserName()) + "/64"))
                .load(new SingleSignOnUrl(localAccount.getAccountName(), localAccount.getUrl() + "/index.php/avatar/" + Uri.encode(SSOUtil.sanitizeUserId(localAccount.getUserName())) + "/64"))
                .error(R.drawable.ic_account_circle_grey_24dp)
                .apply(RequestOptions.circleCropTransform())
                .into(binding.accountItemAvatar);
+2 −17
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ import androidx.annotation.WorkerThread;
import com.nextcloud.android.sso.model.SingleSignOnAccount;

import it.niedermann.owncloud.notes.shared.model.Capabilities;
import it.niedermann.owncloud.notes.shared.util.SSOUtil;
import trikita.log.Log;

@WorkerThread
@@ -46,7 +47,7 @@ public class CapabilitiesClient {
    public static String getDisplayName(@NonNull Context context, @NonNull SingleSignOnAccount ssoAccount, @NonNull ApiProvider apiProvider) {
        final var ocsAPI = apiProvider.getOcsAPI(context, ssoAccount);
        try {
            final var userResponse = ocsAPI.getUser(sanitizeUserId(ssoAccount.userId)).execute();
            final var userResponse = ocsAPI.getUser(SSOUtil.sanitizeUserId(ssoAccount.userId)).execute();
            if (userResponse.isSuccessful()) {
                final var ocsResponse = userResponse.body();
                if (ocsResponse != null) {
@@ -63,20 +64,4 @@ public class CapabilitiesClient {
        return null;
    }

    /**
     * Murena account's userId is set same as it's email address (passed by accountManager app).
     * For old accounts (@e.email) userId = email.
     * For new accounts (@murena.io) userId is first part of email (ex: for email abc@murena.io, userId is abc).
     * For api requests, we needed to pass the actual userId. This method remove the unwanted part (@murena.io) from the userId
     */
    @NonNull
    private static String sanitizeUserId(@NonNull String userId) {
        final String murenaMailEndPart = "@murena.io";

        if (!userId.endsWith(murenaMailEndPart)) {
            return userId;
        }

        return userId.split(murenaMailEndPart)[0];
    }
}
Loading