JS API: Expose logged in user

Plugins may want to access currently logged in user.  For example in
onSubmit() action implementation the user can be warned when she is
about to submit someone's else change:

  Gerrit.install(function(self) {
    function onSubmitChange(c, r) {
      if (self.getCurrentUser()._account_id != c.owner._account_id) {
        return confirm("Really submit change:\n"
            + c.id + "\n"
            + "revision: " + r.name + "\n"
            + "from: " + c.owner.name
            + "?");
      }
      return true;
    }
    Gerrit.on('submitchange', onSubmitChange);
  });

Bug: issue 461
Change-Id: Icec244fa8e07e428e287ff3d90fec3b1f810cf10
This commit is contained in:
David Ostrovsky 2014-09-21 23:06:52 +02:00 committed by David Pursehouse
parent c8c17ec5fb
commit 0a4c0ffa5a
3 changed files with 17 additions and 0 deletions

View File

@ -60,6 +60,11 @@ self.get(url, callback)
a string, otherwise the result is a JavaScript object or array, a string, otherwise the result is a JavaScript object or array,
as described in the relevant REST API documentation. as described in the relevant REST API documentation.
[[self_getCurrentUser]]
=== self.getCurrentUser()
Returns the currently signed in user's AccountInfo data; empty account
data if no user is currently signed in.
[[self_getPluginName]] [[self_getPluginName]]
=== self.getPluginName() === self.getPluginName()
Returns the name this plugin was installed as by the server Returns the name this plugin was installed as by the server
@ -625,6 +630,11 @@ Gerrit.get('/changes/?q=status:open', function (open) {
}); });
---- ----
[[Gerrit_getCurrentUser]]
=== Gerrit.getCurrentUser()
Returns the currently signed in user's AccountInfo data; empty account
data if no user is currently signed in.
[[Gerrit_getPluginName]] [[Gerrit_getPluginName]]
=== Gerrit.getPluginName() === Gerrit.getPluginName()
Returns the name this plugin was installed as by the server Returns the name this plugin was installed as by the server

View File

@ -16,6 +16,7 @@ package com.google.gerrit.client.api;
import com.google.gerrit.client.ErrorDialog; import com.google.gerrit.client.ErrorDialog;
import com.google.gerrit.client.Gerrit; import com.google.gerrit.client.Gerrit;
import com.google.gerrit.client.account.AccountInfo;
import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray; import com.google.gwt.core.client.JsArray;
import com.google.gwt.user.client.History; import com.google.gwt.user.client.History;
@ -66,6 +67,7 @@ public class ApiGlue {
refresh: @com.google.gerrit.client.api.ApiGlue::refresh(), refresh: @com.google.gerrit.client.api.ApiGlue::refresh(),
refreshMenuBar: @com.google.gerrit.client.api.ApiGlue::refreshMenuBar(), refreshMenuBar: @com.google.gerrit.client.api.ApiGlue::refreshMenuBar(),
showError: @com.google.gerrit.client.api.ApiGlue::showError(Ljava/lang/String;), showError: @com.google.gerrit.client.api.ApiGlue::showError(Ljava/lang/String;),
getCurrentUser: @com.google.gerrit.client.api.ApiGlue::getCurrentUser(),
on: function (e,f){(this.events[e] || (this.events[e]=[])).push(f)}, on: function (e,f){(this.events[e] || (this.events[e]=[])).push(f)},
onAction: function (t,n,c){this._onAction(this.getPluginName(),t,n,c)}, onAction: function (t,n,c){this._onAction(this.getPluginName(),t,n,c)},
@ -194,6 +196,10 @@ public class ApiGlue {
Gerrit.display(History.getToken()); Gerrit.display(History.getToken());
} }
private static final AccountInfo getCurrentUser() {
return Gerrit.getUserAccountInfo();
}
private static final void refreshMenuBar() { private static final void refreshMenuBar() {
Gerrit.refreshMenuBar(); Gerrit.refreshMenuBar();
} }

View File

@ -50,6 +50,7 @@ final class Plugin extends JavaScriptObject {
var G = $wnd.Gerrit; var G = $wnd.Gerrit;
@com.google.gerrit.client.api.Plugin::TYPE.prototype = { @com.google.gerrit.client.api.Plugin::TYPE.prototype = {
getPluginName: function(){return this.name}, getPluginName: function(){return this.name},
getCurrentUser: @com.google.gerrit.client.api.ApiGlue::getCurrentUser(),
go: @com.google.gerrit.client.api.ApiGlue::go(Ljava/lang/String;), go: @com.google.gerrit.client.api.ApiGlue::go(Ljava/lang/String;),
refresh: @com.google.gerrit.client.api.ApiGlue::refresh(), refresh: @com.google.gerrit.client.api.ApiGlue::refresh(),
refreshMenuBar: @com.google.gerrit.client.api.ApiGlue::refreshMenuBar(), refreshMenuBar: @com.google.gerrit.client.api.ApiGlue::refreshMenuBar(),