Changeset 4632


Ignore:
Timestamp:
Nov 22, 2017, 1:45:39 PM (6 years ago)
Author:
Nicklas Nordborg
Message:

References #1006: External data filtering and mapping wizard

Added helper method for checking that the logged in user is an administrator. The existing wizards have been updated.

Location:
extensions/net.sf.basedb.relax/trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • extensions/net.sf.basedb.relax/trunk/resources/admin/install.jsp

    r4630 r4632  
    22  pageEncoding="UTF-8"
    33  session="false"
    4   import="net.sf.basedb.core.Application"
    5   import="net.sf.basedb.core.User"
    6   import="net.sf.basedb.core.Role"
    7   import="net.sf.basedb.core.DbControl"
    84  import="net.sf.basedb.core.SessionControl"
    9   import="net.sf.basedb.core.SystemItems"
    10   import="net.sf.basedb.core.PermissionDeniedException"
    115  import="net.sf.basedb.clients.web.Base"
    126  import="net.sf.basedb.clients.web.util.HTML"
     
    2216final float scale = Base.getScale(sc);
    2317final String home = ExtensionsControl.getHomeUrl("net.sf.basedb.relax.admin");
    24 DbControl dc = null;
    25 try
    26 {
    27   dc = sc.newDbControl();
    28   final User user = User.getById(dc, sc.getLoggedInUserId());
    29   boolean isAdmin = user.getId() == SystemItems.getId(User.ROOT)
    30     || sc.getActiveRoles().contains(SystemItems.getId(Role.ADMINISTRATOR));
    31  
    32   if (!isAdmin)
    33   {
    34     throw new PermissionDeniedException("This page requires Administrator privileges.");
    35   }
    36 
    3718%>
    38 <base:page type="default" >
     19<base:page type="default">
    3920<base:head
    4021  scripts="~../relax.js,~install.js"
     
    182163        </base:buttongroup>
    183164      </div>
    184      
    185       <div id="wizard-status" style="display:none; margin-top: 1em;"></div>
    186165    </div>
     166    <div id="wizard-status" style="display:none; margin-top: 1em;"></div>
    187167 
    188168  </div>
     
    190170</base:body>
    191171</base:page>
    192 <%
    193 }
    194 finally
    195 {
    196   if (dc != null) dc.close();
    197 }
    198 %>
  • extensions/net.sf.basedb.relax/trunk/resources/export/map-external-data.js

    r4631 r4632  
    1919    Events.addEventHandler('wizard', 'wizard-submit', map.submit);
    2020   
    21     Doc.show('step-1');
    22     Doc.show('goexport');
     21    Relax.checkIsAdmin('"MapDataToReleases" wizard',
     22      function()
     23      {
     24        Doc.show('step-1');
     25        Doc.show('goexport');
     26      });
    2327  }
    2428 
  • extensions/net.sf.basedb.relax/trunk/resources/export/map-external-data.jsp

    r4631 r4632  
    22  pageEncoding="UTF-8"
    33  session="false"
    4   import="net.sf.basedb.core.Application"
    5   import="net.sf.basedb.core.User"
    6   import="net.sf.basedb.core.Role"
    7   import="net.sf.basedb.core.SystemItems"
    8   import="net.sf.basedb.core.DbControl"
    94  import="net.sf.basedb.core.SessionControl"
    10   import="net.sf.basedb.core.PermissionDeniedException"
    115  import="net.sf.basedb.clients.web.Base"
    126  import="net.sf.basedb.clients.web.util.HTML"
     
    2115final float scale = Base.getScale(sc);
    2216final String home = ExtensionsControl.getHomeUrl("net.sf.basedb.relax.admin");
    23 DbControl dc = null;
    24 try
    25 {
    26   dc = sc.newDbControl();
    27   final User user = User.getById(dc, sc.getLoggedInUserId());
    28   boolean isAdmin = user.getId() == SystemItems.getId(User.ROOT)
    29     || sc.getActiveRoles().contains(SystemItems.getId(Role.ADMINISTRATOR));
    30  
    31   if (!isAdmin)
    32   {
    33     throw new PermissionDeniedException("This page requires Administrator privileges.");
    34   }
    3517%>
    3618<base:page type="default" >
     
    9577</base:body>
    9678</base:page>
    97 <%
    98 }
    99 finally
    100 {
    101   if (dc != null) dc.close();
    102 }
    103 %>
  • extensions/net.sf.basedb.relax/trunk/resources/index-admin.js

    r4630 r4632  
    66  index.initPage = function()
    77  {
    8     // Nothing to do yet!
     8    Relax.checkIsAdmin('Relax (admin)', null, './');
    99  }
    1010 
  • extensions/net.sf.basedb.relax/trunk/resources/index-admin.jsp

    r4630 r4632  
    22  pageEncoding="UTF-8"
    33  session="false"
    4   import="net.sf.basedb.core.Application"
    5   import="net.sf.basedb.core.User"
    6   import="net.sf.basedb.core.Role"
    7   import="net.sf.basedb.core.DbControl"
    84  import="net.sf.basedb.core.SessionControl"
    9   import="net.sf.basedb.core.SystemItems"
    10   import="net.sf.basedb.core.PermissionDeniedException"
    115  import="net.sf.basedb.clients.web.Base"
    126  import="net.sf.basedb.clients.web.util.HTML"
     
    2216final float scale = Base.getScale(sc);
    2317final String home = ExtensionsControl.getHomeUrl("net.sf.basedb.relax.admin");
    24 DbControl dc = null;
    25 try
    26 {
    27   dc = sc.newDbControl();
    28   final User user = User.getById(dc, sc.getLoggedInUserId());
    29   boolean isAdmin = user.getId() == SystemItems.getId(User.ROOT)
    30     || sc.getActiveRoles().contains(SystemItems.getId(Role.ADMINISTRATOR));
    31  
    32   if (!isAdmin)
    33   {
    34     throw new PermissionDeniedException("This page requires Administrator privileges.");
    35   }
    3618%>
    3719<base:page type="default" >
     
    8466  font-size: 1em;
    8567}
     68
     69#wizard.disabled > div > div
     70{
     71  display: none;
     72}
    8673</style>
    8774</base:head>
     
    9077  <p:path><p:pathelement title="Relax" /></p:path>
    9178
    92   <div class="content">
    93  
     79  <div class="content" id="wizard">
     80    <div id="wizard-status"></div>
     81   
    9482    <div class="absolutefull" style="width: 50%; right: auto;">
    9583      <div class="absolutefull" style="left: 0.5em; right: 0.5em;">
     
    123111</base:body>
    124112</base:page>
    125 <%
    126 }
    127 finally
    128 {
    129   if (dc != null) dc.close();
    130 }
    131 %>
  • extensions/net.sf.basedb.relax/trunk/resources/relax.js

    r4631 r4632  
    66  relax.VERSION = '1.1-beta-2';
    77
     8 
     9  relax.checkIsAdmin = function(message, callback, servletDir)
     10  {
     11    var url = (servletDir || '../') + 'Session.servlet?ID='+App.getSessionId();
     12    url += '&cmd=CheckIsAdmin';
     13    if (message) url += '&message='+encodeURIComponent(message);
     14    if (!callback) callback = function() {};
     15    Wizard.asyncJsonRequest(url, callback);
     16  }
     17 
    818  return relax;
    919}();
     
    674684  {
    675685    container = Doc.element(container);
     686    if (!container) return;
    676687    var input = container.getElementsByTagName('input');
    677688    for (var i = 0; i < input.length; i++)
  • extensions/net.sf.basedb.relax/trunk/src/net/sf/basedb/relax/Relax.java

    r4610 r4632  
    1818import net.sf.basedb.core.Include;
    1919import net.sf.basedb.core.ItemQuery;
     20import net.sf.basedb.core.Permission;
     21import net.sf.basedb.core.PermissionDeniedException;
     22import net.sf.basedb.core.Role;
    2023import net.sf.basedb.core.SessionControl;
     24import net.sf.basedb.core.SystemItems;
     25import net.sf.basedb.core.User;
    2126import net.sf.basedb.relax.converter.DateToStringConverter;
    2227import net.sf.basedb.relax.converter.StringToDateConverter;
     
    140145  }
    141146 
     147  /**
     148    Check if the logged in user is an administrator.
     149    @since 1.1
     150  */
     151  public static boolean isAdmin(SessionControl sc)
     152  {
     153    boolean isAdmin = sc.getLoggedInUserId() == SystemItems.getId(User.ROOT)
     154      || sc.getActiveRoles().contains(SystemItems.getId(Role.ADMINISTRATOR));
     155    return isAdmin;
     156  }
     157 
     158  /**
     159    Throws a PermissionDeniedException if the logged in user is not an administrator
     160    @since 1.1
     161  */
     162  public static void checkIsAdmin(SessionControl sc, String message)
     163  {
     164    if (!isAdmin(sc)) throw new PermissionDeniedException(Permission.USE, message);
     165  }
     166 
    142167  private static synchronized void loadConfig()
    143168  {
  • extensions/net.sf.basedb.relax/trunk/src/net/sf/basedb/relax/servlet/InstallServlet.java

    r4608 r4632  
    8282      if ("Validate".equals(cmd) || "Install".equals(cmd))
    8383      {
     84        Relax.checkIsAdmin(sc, "'" + cmd + "' wizard");
     85
    8486        dc = sc.newDbControl();
     87       
    8588        boolean createIfMissing = "Install".equals(cmd);
    8689        JSONArray jsonChecks = new JSONArray();
  • extensions/net.sf.basedb.relax/trunk/src/net/sf/basedb/relax/servlet/SessionServlet.java

    r4631 r4632  
    1515import net.sf.basedb.relax.JsonUtil;
    1616import net.sf.basedb.relax.Relax;
     17import net.sf.basedb.util.Values;
    1718import net.sf.basedb.util.error.ThrowableUtil;
    1819
     
    7273        }
    7374      }
     75      else if ("CheckIsAdmin".equals(cmd))
     76      {
     77        String message = Values.getString(req.getParameter("message"), "this wizard");
     78        sc = Relax.getSessionControl(req);
     79        Relax.checkIsAdmin(sc, message);
     80      }
    7481     
    7582    }
Note: See TracChangeset for help on using the changeset viewer.