1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
/* -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- */
function Action() {
this.lookup = function(name) {
return this["_detail_" + name];
},
this.toString = function() {
var ret = "[Action id='" + this.id + "'";
for (var i in this) {
if (i.indexOf("_detail_") == 0) {
var key = i.substr(8);
var value = this[i];
ret += " " + key + "='" + value + "'";
}
}
ret += "]";
return ret;
};
};
function Subject() {
this.isInGroup = function(group) {
for (var n = 0; n < this.groups.length; n++) {
if (this.groups[n] == group)
return true;
}
return false;
};
this.isInNetGroup = function(netGroup) {
return polkit._userIsInNetGroup(this.user, netGroup);
};
this.toString = function() {
var ret = "[Subject";
for (var i in this) {
if (typeof this[i] != "function") {
if (typeof this[i] == "string")
ret += " " + i + "='" + this[i] + "'";
else
ret += " " + i + "=" + this[i];
}
}
ret += "]";
return ret;
};
};
polkit._adminRuleFuncs = [];
polkit.addAdminRule = function(callback) {this._adminRuleFuncs.push(callback);};
polkit._runAdminRules = function(action, subject) {
var ret = null;
for (var n = 0; n < this._adminRuleFuncs.length; n++) {
var func = this._adminRuleFuncs[n];
var func_ret = func(action, subject);
if (func_ret) {
ret = func_ret;
break
}
}
return ret ? ret.join(",") : "";
};
polkit._ruleFuncs = [];
polkit.addRule = function(callback) {this._ruleFuncs.push(callback);};
polkit._runRules = function(action, subject) {
var ret = null;
for (var n = 0; n < this._ruleFuncs.length; n++) {
var func = this._ruleFuncs[n];
var func_ret = func(action, subject);
if (func_ret) {
ret = func_ret;
break
}
}
return ret;
};
polkit._deleteRules = function() {
this._adminRuleFuncs = [];
this._ruleFuncs = [];
};
polkit.Result = {
NO : "no",
YES : "yes",
AUTH_SELF : "auth_self",
AUTH_SELF_KEEP : "auth_self_keep",
AUTH_ADMIN : "auth_admin",
AUTH_ADMIN_KEEP : "auth_admin_keep",
NOT_HANDLED : null
};
|