Changeset 7295


Ignore:
Timestamp:
Feb 20, 2017, 8:09:27 AM (5 years ago)
Author:
Nicklas Nordborg
Message:

References #2043: Activating/deactivating roles on the fly in a login session

Added a "Inactive roles" tab in the "Preferences" dialog. This allows a user to set roles that should be inactive by default after logging in.

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/clients/web/net/sf/basedb/clients/web/resources/menu.properties

    r7294 r7295  
    275275myroles.tooltip.0 De-activate this role
    276276myroles.tooltip.1 Activate this role
     277myroles.options   Options
     278myroles.options.tooltip Configure default inactive roles
    277279
    278280## Refresh menu ##
  • trunk/www/include/menu.jsp

    r7294 r7295  
    12151215          %>
    12161216          <m:menuitem
    1217             title="<%=r.getName() %>"
     1217            title="<%=HTML.encodeTags(r.getName()) %>"
    12181218            tooltip="<%=menu.getString("myroles.tooltip", isInactive)%>"
    12191219            icon="<%=isInactive ? "option_unselected.png" : "option_selected.png"%>"
     
    12231223          <%
    12241224        }
     1225        %>
     1226        <m:menuseparator />
     1227        <m:menuitem
     1228          title="<%=menu.getString("myroles.options") + "…"%>"
     1229          url="<%=root+"my_base/user/preferences.jsp?ID="+ID+"&amp;page=inactiveRoles"%>"
     1230          data-popup="Preferences, 600, 400"
     1231          tooltip="<%=menu.getString("myroles.options.tooltip")%>"
     1232        />
     1233        <%
    12251234      }
    12261235      %>
  • trunk/www/login.jsp

    r7189 r7295  
    4444  import="net.sf.basedb.util.Values"
    4545  import="java.util.Iterator"
     46  import="java.util.Set"
     47  import="java.util.HashSet"
     48  import="java.util.Arrays"
    4649%>
    4750<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
     
    121124  if (sc.isLoggedIn())
    122125  {
     126    // Some roles may be inactive by default
     127    String tmp = Values.getStringOrNull(sc.getUserClientSetting("inactiveRoles"));
     128    if (tmp != null)
     129    {
     130      Set<Integer> defaultInactive = new HashSet<Integer>(Arrays.asList(Values.getInt(tmp.split(":"))));
     131      for (int roleId : defaultInactive)
     132      {
     133        sc.setRoleInactive(roleId, true);
     134      }
     135    }
     136   
    123137    int lastActiveProjectId = Values.getInt(sc.getUserClientSetting("projects.lastactive"));
    124138    String startPageId = sc.getUserClientSetting("start-page-id");
  • trunk/www/my_base/user/preferences.jsp

    r7112 r7295  
    3939  import="net.sf.basedb.core.DbControl"
    4040  import="net.sf.basedb.core.User"
     41  import="net.sf.basedb.core.Role"
     42  import="net.sf.basedb.core.Type"
    4143  import="net.sf.basedb.core.Metadata"
    4244  import="net.sf.basedb.core.ItemContext"
     45  import="net.sf.basedb.core.ItemQuery"
    4346  import="net.sf.basedb.core.Permission"
     47  import="net.sf.basedb.core.query.Hql"
     48  import="net.sf.basedb.core.query.Restrictions"
     49  import="net.sf.basedb.core.query.Expressions"
     50  import="net.sf.basedb.core.query.Orders"
    4451  import="net.sf.basedb.util.ToStringComparator"
    4552  import="net.sf.basedb.clients.web.Base"
     
    5158  import="net.sf.basedb.clients.web.extensions.startpage.StartPageAction"
    5259  import="net.sf.basedb.util.Values"
     60  import="java.util.Collections"
    5361  import="java.util.List"
    5462  import="java.util.Set"
     
    95103  allItems.add(Item.BIOASSAYSET);
    96104 
     105  // Load roles
     106  List<Role> roles = null;
     107  Set<Integer> roleIds = sc.getAllRoles();
     108  Set<Integer> defaultInactive = Collections.emptySet();
     109  if (roleIds != null && roleIds.size() > 0)
     110  {
     111    ItemQuery<Role> roleQuery = Role.getQuery();
     112    roleQuery.restrict(Restrictions.in(Hql.property("id"), Expressions.parameter("roles")));
     113    roleQuery.setParameter("roles", roleIds, Type.INT);
     114    roleQuery.order(Orders.asc(Hql.property("name")));
     115    roles = roleQuery.list(dc);
     116   
     117    String tmp = Values.getStringOrNull(sc.getUserClientSetting("inactiveRoles"));
     118    if (tmp != null)
     119    {
     120      defaultInactive = new HashSet<Integer>(Arrays.asList(Values.getInt(tmp.split(":"))));
     121    }
     122  }
     123
    97124  JspContext context = ExtensionsControl.createContext(dc, pageContext, null, user);
    98125  ExtensionsInvoker<StartPageAction> invoker = (ExtensionsInvoker<StartPageAction>)ExtensionsControl.useExtensions(context, "net.sf.basedb.clients.web.start-page");
     
    505532        </table>
    506533      </t:tab>
     534      <t:tab
     535        id="inactiveRoles"
     536        title="Inactive roles"
     537        helpid="userpreferences.inactiveroles"
     538        tooltip="Select if any roles should be inactive by default after logging in"
     539        visible="<%=roles != null && roles.size() > 0%>"
     540        >
     541        <table class="fullform">
     542        <tr class="dynamic">
     543          <th>Default roles</th>
     544          <td>
     545            <b>Inactive at login</b><br>
     546            <%
     547            for (Role r : roles)
     548            {
     549              boolean inactive = defaultInactive.contains(r.getId());
     550              %>
     551              <label><input type="checkbox" id="role.<%=r.getId()%>"
     552                name="inactiveRoles" value="<%=r.getId()%>"
     553                <%=inactive ? "checked" : "" %>
     554                ><%=HTML.encodeTags(r.getName())%></label><br>
     555              <%
     556            }
     557            %>
     558            <div class="messagecontainer note" style="margin-top: 1em;">
     559            Select all roles that should be inactive by default
     560            after logging in. Note! This setting only applies when
     561            logging in via the web interface.
     562            </div>
     563          </td>
     564        </tr>
     565        </table>
     566       
     567      </t:tab>
    507568    </t:tabcontrol>
    508569    </form>
  • trunk/www/my_base/user/submit_user.jsp

    r7112 r7295  
    4848  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
    4949  import="java.util.Arrays"
     50  import="java.util.Collections"
    5051  import="java.util.List"
    5152%>
     
    173174      stickyItems == null ? "" : Values.getString(Arrays.asList(stickyItems), ":", true));
    174175   
     176    // Roles tab
     177    String[] inactiveRoles = request.getParameterValues("inactiveRoles");
     178    sc.setUserClientSetting("inactiveRoles", inactiveRoles == null ? null : Values.getString(Arrays.asList(inactiveRoles), ":", true));
     179   
    175180    message = "Preferences saved";
    176181  }
Note: See TracChangeset for help on using the changeset viewer.