parent
70ceeef2af
commit
aff27cad10
@ -126,6 +126,7 @@ namespace Pamac {
|
|||||||
public Timer timer;
|
public Timer timer;
|
||||||
public Cancellable cancellable;
|
public Cancellable cancellable;
|
||||||
public Curl.Easy curl;
|
public Curl.Easy curl;
|
||||||
|
private bool authorized;
|
||||||
|
|
||||||
public signal void emit_event (uint primary_event, uint secondary_event, string[] details);
|
public signal void emit_event (uint primary_event, uint secondary_event, string[] details);
|
||||||
public signal void emit_providers (string depend, string[] providers);
|
public signal void emit_providers (string depend, string[] providers);
|
||||||
@ -164,6 +165,7 @@ namespace Pamac {
|
|||||||
create_thread_pool ();
|
create_thread_pool ();
|
||||||
cancellable = new Cancellable ();
|
cancellable = new Cancellable ();
|
||||||
curl = new Curl.Easy ();
|
curl = new Curl.Easy ();
|
||||||
|
authorized = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void set_environment_variables (HashTable<string,string> variables) {
|
public void set_environment_variables (HashTable<string,string> variables) {
|
||||||
@ -261,8 +263,10 @@ namespace Pamac {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async bool check_authorization (GLib.BusName sender) {
|
private async bool check_authorization (GLib.BusName sender) {
|
||||||
|
if (authorized) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
SourceFunc callback = check_authorization.callback;
|
SourceFunc callback = check_authorization.callback;
|
||||||
bool authorized = false;
|
|
||||||
try {
|
try {
|
||||||
Polkit.Authority authority = Polkit.Authority.get_sync ();
|
Polkit.Authority authority = Polkit.Authority.get_sync ();
|
||||||
Polkit.Subject subject = Polkit.SystemBusName.new (sender);
|
Polkit.Subject subject = Polkit.SystemBusName.new (sender);
|
||||||
@ -286,6 +290,11 @@ namespace Pamac {
|
|||||||
} catch (GLib.Error e) {
|
} catch (GLib.Error e) {
|
||||||
stderr.printf ("%s\n", e.message);
|
stderr.printf ("%s\n", e.message);
|
||||||
}
|
}
|
||||||
|
if (!authorized) {
|
||||||
|
current_error = ErrorInfos () {
|
||||||
|
message = _("Authentication failed")
|
||||||
|
};
|
||||||
|
}
|
||||||
return authorized;
|
return authorized;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -348,10 +357,6 @@ namespace Pamac {
|
|||||||
} catch (ThreadError e) {
|
} catch (ThreadError e) {
|
||||||
stderr.printf ("Thread Error %s\n", e.message);
|
stderr.printf ("Thread Error %s\n", e.message);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
current_error = ErrorInfos () {
|
|
||||||
message = _("Authentication failed")
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -372,10 +377,6 @@ namespace Pamac {
|
|||||||
} catch (Error e) {
|
} catch (Error e) {
|
||||||
stderr.printf ("Error: %s\n", e.message);
|
stderr.printf ("Error: %s\n", e.message);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
current_error = ErrorInfos () {
|
|
||||||
message = _("Authentication failed")
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -2152,9 +2153,6 @@ namespace Pamac {
|
|||||||
stderr.printf ("Thread Error %s\n", e.message);
|
stderr.printf ("Thread Error %s\n", e.message);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
current_error = ErrorInfos () {
|
|
||||||
message = _("Authentication failed")
|
|
||||||
};
|
|
||||||
trans_release ();
|
trans_release ();
|
||||||
trans_commit_finished (false);
|
trans_commit_finished (false);
|
||||||
}
|
}
|
||||||
|
@ -263,7 +263,8 @@ namespace Pamac {
|
|||||||
|
|
||||||
public async void run_preferences_dialog () {
|
public async void run_preferences_dialog () {
|
||||||
SourceFunc callback = run_preferences_dialog.callback;
|
SourceFunc callback = run_preferences_dialog.callback;
|
||||||
ulong handler_id = daemon.get_authorization_finished.connect ((authorized) => {
|
check_authorization.begin ((obj, res) => {
|
||||||
|
bool authorized = check_authorization.end (res);
|
||||||
if (authorized) {
|
if (authorized) {
|
||||||
var preferences_dialog = new PreferencesDialog (this);
|
var preferences_dialog = new PreferencesDialog (this);
|
||||||
preferences_dialog.run ();
|
preferences_dialog.run ();
|
||||||
@ -274,9 +275,7 @@ namespace Pamac {
|
|||||||
}
|
}
|
||||||
Idle.add ((owned) callback);
|
Idle.add ((owned) callback);
|
||||||
});
|
});
|
||||||
start_get_authorization ();
|
|
||||||
yield;
|
yield;
|
||||||
daemon.disconnect (handler_id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void run_about_dialog () {
|
public void run_about_dialog () {
|
||||||
@ -300,12 +299,21 @@ namespace Pamac {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void start_get_authorization () {
|
async bool check_authorization () {
|
||||||
|
SourceFunc callback = check_authorization.callback;
|
||||||
|
bool authorized = false;
|
||||||
|
ulong handler_id = daemon.get_authorization_finished.connect ((authorized_) => {
|
||||||
|
authorized = authorized_;
|
||||||
|
Idle.add ((owned) callback);
|
||||||
|
});
|
||||||
try {
|
try {
|
||||||
daemon.start_get_authorization ();
|
daemon.start_get_authorization ();
|
||||||
} catch (IOError e) {
|
} catch (IOError e) {
|
||||||
stderr.printf ("IOError: %s\n", e.message);
|
stderr.printf ("IOError: %s\n", e.message);
|
||||||
}
|
}
|
||||||
|
yield;
|
||||||
|
daemon.disconnect (handler_id);
|
||||||
|
return authorized;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void start_write_pamac_config (HashTable<string,Variant> new_pamac_conf) {
|
public void start_write_pamac_config (HashTable<string,Variant> new_pamac_conf) {
|
||||||
@ -1634,7 +1642,15 @@ namespace Pamac {
|
|||||||
if (to_build_queue.get_length () != 0) {
|
if (to_build_queue.get_length () != 0) {
|
||||||
show_in_term ("");
|
show_in_term ("");
|
||||||
clear_previous_lists ();
|
clear_previous_lists ();
|
||||||
build_aur_packages.begin ();
|
check_authorization.begin ((obj, res) => {
|
||||||
|
bool authorized = check_authorization.end (res);
|
||||||
|
if (authorized) {
|
||||||
|
build_aur_packages.begin ();
|
||||||
|
} else {
|
||||||
|
to_build_queue.clear ();
|
||||||
|
on_trans_commit_finished (false);
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
clear_previous_lists ();
|
clear_previous_lists ();
|
||||||
if (sysupgrade_after_trans) {
|
if (sysupgrade_after_trans) {
|
||||||
@ -1667,6 +1683,7 @@ namespace Pamac {
|
|||||||
to_load.remove_all ();
|
to_load.remove_all ();
|
||||||
}
|
}
|
||||||
clear_previous_lists ();
|
clear_previous_lists ();
|
||||||
|
to_build_queue.clear ();
|
||||||
warning_textbuffer = new StringBuilder ();
|
warning_textbuffer = new StringBuilder ();
|
||||||
handle_error (err);
|
handle_error (err);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user