Skip to content

Commit

Permalink
Bug 1128853: Bugzilla shouldn't try to write API tokens into the shad…
Browse files Browse the repository at this point in the history
…ow DB

r=dkl,a=glob
  • Loading branch information
globau committed Mar 5, 2015
1 parent f6686ca commit b7147b7
Show file tree
Hide file tree
Showing 14 changed files with 30 additions and 1 deletion.
11 changes: 11 additions & 0 deletions Bugzilla.pm
Original file line number Diff line number Diff line change
Expand Up @@ -537,6 +537,11 @@ sub switch_to_main_db {
return $class->dbh_main;
}

sub is_shadow_db {
my $class = shift;
return $class->request_cache->{dbh} != $class->dbh_main;
}

sub fields {
my ($class, $criteria) = @_;
$criteria ||= {};
Expand Down Expand Up @@ -942,6 +947,12 @@ Switch from using the main database to using the shadow database.
Change the database object to refer to the main database.
=item C<is_shadow_db>
Returns true if the currently active database is the shadow database.
Returns false if a the currently active database is the man database, or if a
shadow database is not configured or enabled.
=item C<params>
The current Parameters of Bugzilla, as a hashref. If C<data/params.json>
Expand Down
5 changes: 5 additions & 0 deletions Bugzilla/Token.pm
Original file line number Diff line number Diff line change
Expand Up @@ -432,6 +432,9 @@ sub _create_token {
trick_taint($tokentype);
trick_taint($eventdata);

my $is_shadow = Bugzilla->is_shadow_db;
$dbh = Bugzilla->switch_to_main_db() if $is_shadow;

$dbh->bz_start_transaction();

my $token = GenerateUniqueToken();
Expand All @@ -444,8 +447,10 @@ sub _create_token {
if (wantarray) {
my (undef, $token_ts, undef) = GetTokenData($token);
$token_ts = str2time($token_ts);
Bugzilla->switch_to_shadow_db() if $is_shadow;
return ($token, $token_ts);
} else {
Bugzilla->switch_to_shadow_db() if $is_shadow;
return $token;
}
}
Expand Down
1 change: 1 addition & 0 deletions template/en/default/account/prefs/prefs.html.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
[% PROCESS global/header.html.tmpl
title = current_tab.label
subheader = filtered_login
generate_api_token = 1
style_urls = ['skins/standard/admin.css']
javascript_urls = ['js/util.js', 'js/field.js', 'js/TUI.js']
doc_section = current_tab.doc_section
Expand Down
1 change: 1 addition & 0 deletions template/en/default/admin/components/create.html.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
[% title = BLOCK %]Add component to the [% product.name FILTER html %] product[% END %]
[% PROCESS global/header.html.tmpl
title = title
generate_api_token = 1
style_urls = ['skins/standard/admin.css']
yui = [ 'autocomplete' ]
javascript_urls = [ "js/field.js" ]
Expand Down
1 change: 1 addition & 0 deletions template/en/default/admin/components/edit.html.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
[% END %]
[% PROCESS global/header.html.tmpl
title = title
generate_api_token = 1
style_urls = ['skins/standard/admin.css']
yui = [ 'autocomplete' ]
javascript_urls = [ "js/field.js" ]
Expand Down
1 change: 1 addition & 0 deletions template/en/default/admin/products/create.html.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

[% PROCESS global/header.html.tmpl
title = title
generate_api_token = 1
style_urls = ['skins/standard/admin.css']
javascript_urls = ['js/util.js', 'js/field.js']
yui = [ 'autocomplete' ]
Expand Down
1 change: 1 addition & 0 deletions template/en/default/admin/sudo.html.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

[% PROCESS global/header.html.tmpl
title = "Begin sudo session"
generate_api_token = 1
style_urls = ['skins/standard/admin.css']
doc_section = "administering/users.html#impersonating-users"
%]
Expand Down
1 change: 1 addition & 0 deletions template/en/default/attachment/create.html.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
title = title
header = header
subheader = subheader
generate_api_token = 1
style_urls = ['skins/standard/bug.css']
yui = [ 'autocomplete' ]
javascript_urls = [ "js/attachment.js", 'js/field.js', "js/util.js", "js/TUI.js" ]
Expand Down
1 change: 1 addition & 0 deletions template/en/default/attachment/edit.html.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
title = title
header = header
subheader = subheader
generate_api_token = 1
doc_section = "using/editing.html#attachments"
javascript_urls = ['js/attachment.js', 'js/field.js']
style_urls = ['skins/standard/bug.css']
Expand Down
1 change: 1 addition & 0 deletions template/en/default/bug/create/create.html.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

[% PROCESS global/header.html.tmpl
title = title
generate_api_token = 1
yui = [ 'autocomplete', 'calendar', 'datatable', 'button' ]
style_urls = ['skins/standard/bug.css']
javascript_urls = [ "js/attachment.js", "js/util.js",
Expand Down
1 change: 1 addition & 0 deletions template/en/default/bug/show-header.html.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
[% title = title _ "($filtered_alias) " %]
[% END %]
[% title = title _ filtered_desc %]
[% generate_api_token = 1 %]
[% yui = ['autocomplete', 'calendar'] %]
[% yui.push('container') IF user.can_tag_comments %]
[% javascript_urls = [ "js/util.js", "js/field.js", "js/comments.js" ] %]
Expand Down
4 changes: 3 additions & 1 deletion template/en/default/global/header.html.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
# style_urls: list. List of URLs to CSS style sheets.
# message: string. A message to display to the user. May contain HTML.
# atomlink: Atom link URL, May contain HTML
# generate_api_token: generate a token which can be used to make authenticated webservice calls
#%]

[% IF message %]
Expand All @@ -37,6 +38,7 @@
no_yui = 0
jquery = []
jquery_css = []
generate_api_token = 0
%]

[% IF NOT no_yui %]
Expand Down Expand Up @@ -206,7 +208,7 @@
version_required:
"You must select a Version for this [% terms.bug %]."
}
[% IF javascript_urls.containsany(['js/bug.js', 'js/field.js', 'js/comment-tagging.js']) %]
[% IF generate_api_token %]
, api_token: '[% get_api_token FILTER js FILTER html %]'
[% END %]
};
Expand Down
1 change: 1 addition & 0 deletions template/en/default/list/list.html.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@

[% PROCESS global/header.html.tmpl
title = title
generate_api_token = dotweak
atomlink = "buglist.cgi?$urlquerypart&title=$title&ctype=atom"
yui = [ 'autocomplete', 'calendar' ]
javascript_urls = [ "js/util.js", "js/field.js", "js/TUI.js" ]
Expand Down
1 change: 1 addition & 0 deletions template/en/default/request/queue.html.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

[% PROCESS global/header.html.tmpl
title="Request Queue"
generate_api_token = 1
onload="var f = document.request_form; selectProduct(f.product, f.component, null, null, 'Any');"
javascript_urls=["js/productform.js", "js/field.js"]
style_urls = ['skins/standard/buglist.css']
Expand Down

0 comments on commit b7147b7

Please sign in to comment.