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

Unverified Commit 0041f6d6 authored by DaVinci9196's avatar DaVinci9196 Committed by GitHub
Browse files

Extend authorized domain scope (#2204)

parent 06233968
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -81,8 +81,9 @@ public class HttpFormClient {
        }

        Log.d(TAG, "-- Request --\n" + content);
        String replace = content.toString().trim().replace("\n", "");
        OutputStream os = connection.getOutputStream();
        os.write(content.toString().getBytes());
        os.write(replace.trim().getBytes());
        os.close();

        if (connection.getResponseCode() != 200) {
@@ -117,8 +118,12 @@ public class HttpFormClient {
    private static void appendParam(StringBuilder content, String key, String value) {
        if (content.length() > 0)
            content.append("&");
        if (key.equals("token_request_options")) {
            content.append(Uri.encode(key)).append("=").append(value);
        } else {
            content.append(Uri.encode(key)).append("=").append(Uri.encode(String.valueOf(value)));
        }
    }

    private static <T> T parseResponse(Class<T> tClass, HttpURLConnection connection, String result) throws IOException {
        Map<String, List<String>> headerFields = connection.getHeaderFields();
@@ -138,6 +143,7 @@ public class HttpFormClient {
                for (Field field : tClass.getDeclaredFields()) {
                    if (field.isAnnotationPresent(ResponseField.class) &&
                            key.equals(field.getAnnotation(ResponseField.class).value())) {
                        field.setAccessible(true);
                        matched = true;
                        if (field.getType().equals(String.class)) {
                            field.set(response, value);
@@ -163,6 +169,7 @@ public class HttpFormClient {
                if (strings == null || strings.size() != 1) continue;
                String value = strings.get(0);
                try {
                    field.setAccessible(true);
                    if (field.getType().equals(String.class)) {
                        field.set(response, value);
                    } else if (field.getType().equals(boolean.class)) {
@@ -178,6 +185,7 @@ public class HttpFormClient {
            }
            if (field.isAnnotationPresent(ResponseStatusCode.class) && field.getType() == int.class) {
                try {
                    field.setAccessible(true);
                    field.setInt(response, connection.getResponseCode());
                } catch (IllegalAccessException e) {
                    Log.w(TAG, e);
@@ -185,6 +193,7 @@ public class HttpFormClient {
            }
            if (field.isAnnotationPresent(ResponseStatusText.class) && field.getType() == String.class) {
                try {
                    field.setAccessible(true);
                    field.set(response, connection.getResponseMessage());
                } catch (IllegalAccessException e) {
                    Log.w(TAG, e);
+4 −0
Original line number Diff line number Diff line
@@ -94,4 +94,8 @@ public class Scopes {
    public static final String USERINFO_EMAIL = "https://www.googleapis.com/auth/userinfo.email";
    @Hide
    public static final String USERINFO_PROFILE = "https://www.googleapis.com/auth/userinfo.profile";
    @Hide
    public static final String USER_BIRTHDAY_READ = "https://www.googleapis.com/auth/user.birthday.read";
    @Hide
    public static final String GMAIL_READONLY = "https://www.googleapis.com/auth/gmail.readonly";
}
+42 −1
Original line number Diff line number Diff line
@@ -15,3 +15,44 @@ message ConsentData {
    }
    repeated ScopeDetails scopes = 2;
}

message RequestOptions {
//    optional bool field_1 = 1;
//    optional string field_2 = 2;
//    optional string field_3 = 3;
//    optional int32 field_4 = 4;
//    optional int32 field_5 = 5;
    optional int32 remote = 7;
    optional int32 version = 10;
    optional string sessionId = 11;
//    optional bool field_12 = 12;
}

message ConsentUrlResponse {
    optional int32 resultCode = 2;
    optional string consentUrl = 3;
    optional Cookie cookie = 4;
}

message ConsentCookiesResponse {
    optional ConsentCookies consentCookies = 1;
}

message ConsentCookies {
    optional int32 resultCode = 1;
    repeated Cookie cookies = 2;
}

message Cookie {
    optional string cookieName = 1;
    optional string cookieValue = 2;
    optional string domain = 3;
    optional string path = 4;
    optional int64 sameSite = 5;
    optional int64 secure = 6;
    optional int64 httpOnly = 7;
    optional int64 maxAge = 8;
    optional int64 version = 9;
    optional string discard = 10;
    optional string comment = 12;
}
+6 −0
Original line number Diff line number Diff line
@@ -509,6 +509,12 @@
            </intent-filter>
        </service>

        <activity
            android:name="org.microg.gms.auth.consent.ConsentSignInActivity"
            android:process=":ui"
            android:exported="false"
            android:theme="@style/Theme.AppCompat.DayNight.Dialog"/>

        <!-- Games -->

        <activity
+13 −2
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ import org.microg.gms.common.PackageUtils;
import org.microg.gms.settings.SettingsContract;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import static android.content.pm.ApplicationInfo.FLAG_SYSTEM;
import static android.content.pm.ApplicationInfo.FLAG_UPDATED_SYSTEM_APP;
@@ -30,7 +32,7 @@ public class AuthManager {
    public static final String PERMISSION_TREE_BASE = "com.google.android.googleapps.permission.GOOGLE_AUTH.";
    public static final String PREF_AUTH_VISIBLE = SettingsContract.Auth.VISIBLE;
    public static final int ONE_HOUR_IN_SECONDS = 60 * 60;

    public Map<Object, Object> dynamicFields = new HashMap<>();
    private final Context context;
    private final String accountName;
    private final String packageName;
@@ -49,6 +51,7 @@ public class AuthManager {
    private String tokenRequestOptions;
    public String includeEmail;
    public String includeProfile;
    public boolean isGmsApp;

    public AuthManager(Context context, String accountName, String packageName, String service) {
        this.context = context;
@@ -160,6 +163,10 @@ public class AuthManager {
        this.tokenRequestOptions = tokenRequestOptions;
    }

    public void putDynamicFiled(Object key, Object value) {
        this.dynamicFields.put(key, value);
    }

    public boolean accountExists() {
        for (Account refAccount : getAccountManager().getAccountsByType(accountType)) {
            if (refAccount.name.equalsIgnoreCase(accountName)) return true;
@@ -273,7 +280,11 @@ public class AuthManager {
                .itCaveatTypes(itCaveatTypes)
                .tokenRequestOptions(tokenRequestOptions)
                .systemPartition(isSystemApp())
                .hasPermission(isPermitted());
                .hasPermission(isPermitted())
                .putDynamicFiledMap(dynamicFields);
        if (isGmsApp) {
            request.appIsGms();
        }
        if (legacy) {
            request.callerIsGms().calledFromAccountManager();
        } else {
Loading