Changeset 2013


Ignore:
Timestamp:
07/17/09 02:05:20 (3 years ago)
Author:
mswertz
Message:

Feature: enhanced security system

Location:
molgenis3_3/src/org/molgenis
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • molgenis3_3/src/org/molgenis/MolgenisOptions.java

    r1992 r2013  
    7777        @Option(name = "force_molgenis_package", param = "force_molgenis_package", type = Option.Type.REQUIRED_ARGUMENT, usage = "Expert option. Whether the generated package should be 'molgenis' or the name specified in the model. Default: false") 
    7878        public boolean force_molgenis_package = false; 
     79         
     80        @Option(name = "auth_loginclass", param = "auth_loginclass", type = Option.Type.REQUIRED_ARGUMENT, usage = "Expert option.") 
     81        public String auth_loginclass = "org.molgenis.framework.auth.SimpleLogin"; 
    7982 
    8083        // @Option(name = "force_lowercase_names", param = "force_lowercase_names", 
  • molgenis3_3/src/org/molgenis/framework/auth/Login.java

    r2005 r2013  
    22 
    33import java.text.ParseException; 
     4import java.util.List; 
    45 
    56import org.molgenis.framework.Database; 
     
    1617         * Authenticate the user 
    1718         *  
    18          * @param database to login to 
    19          * @param name of user 
    20          * @param password of user 
     19         * @param database 
     20         *            to login to 
     21         * @param name 
     22         *            of user 
     23         * @param password 
     24         *            of user 
    2125         * @return 
    2226         */ 
     
    3034        /** 
    3135         * Reloads all permission settings for this user. 
    32          * @throws ParseException  
    33          * @throws DatabaseException  
     36         *  
     37         * @throws ParseException 
     38         * @throws DatabaseException 
    3439         */ 
    3540        public void reload(Database db) throws DatabaseException, ParseException; 
     
    4449 
    4550        /** does the user have permissions to read data from this entity */ 
    46         public boolean hasReadPermission(Entity entity); 
     51        public <E extends Entity> boolean  hasReadPermission(Class<E> entityClass); 
    4752 
    4853        /** Does the user have create, update, delete permissions for this entity */ 
    49         public boolean hasEditPermission(Entity entity) throws DatabaseException; 
     54        public <E extends Entity> boolean hasEditPermission(Class<E> entityClass) throws DatabaseException; 
     55         
     56        /** Does the user have the right to write these entities*/ 
     57        public <E extends Entity> boolean hasEditPermission(E entity) throws DatabaseException; 
     58         
     59        public <E extends Entity> boolean hasEditPermission(List<E> entities) throws DatabaseException; 
    5060 
    5161        /** create a filter for only those records the user/group is allowed to view */ 
    52         public QueryRule getUserFilters(Entity entity); 
     62        public QueryRule getRowlevelSecurityFilters(Entity entity); 
    5363 
    5464        /** 
     
    6575         */ 
    6676        public Integer getUserId(); 
     77 
     78        /** 
     79         * Indicate if login is required 
     80         *  
     81         * @return 
     82         */ 
     83        public boolean isLoginRequired(); 
    6784} 
  • molgenis3_3/src/org/molgenis/framework/auth/SimpleLogin.java

    r2005 r2013  
    11package org.molgenis.framework.auth; 
    22 
     3import java.util.List; 
     4 
    35import org.molgenis.framework.Database; 
     6import org.molgenis.framework.data.DatabaseException; 
    47import org.molgenis.framework.data.QueryRule; 
    58import org.molgenis.util.Entity; 
     
    2326 
    2427        @Override 
    25         public boolean hasReadPermission(Entity entity)  
     28        public <E extends Entity> boolean hasReadPermission(Class<E> entity)  
    2629        { 
    2730                return true; 
     
    2932 
    3033        @Override 
    31         public boolean hasEditPermission(Entity entity)  
     34        public <E extends Entity> boolean hasEditPermission(Class<E> entity)  
    3235        { 
    3336                return true; 
     
    3538 
    3639        @Override 
    37         public QueryRule getUserFilters(Entity entity)  
     40        public QueryRule getRowlevelSecurityFilters(Entity entity)  
    3841        { 
    3942                return null; 
     
    8184                return false; 
    8285        } 
     86 
     87        @Override 
     88        public boolean isLoginRequired() 
     89        { 
     90                // TODO Auto-generated method stub 
     91                return false; 
     92        } 
     93 
     94// door Martijn erbij gezet 3 juli 2009 
     95        @Override  
     96        public <E extends Entity> boolean hasEditPermission(E entity) 
     97                        throws DatabaseException { 
     98                // TODO Auto-generated method stub 
     99                return true; 
     100        } 
     101 
     102        @Override 
     103        public <E extends Entity> boolean hasEditPermission(List<E> entities) 
     104                        throws DatabaseException { 
     105                // TODO Auto-generated method stub 
     106                return true; 
     107        } 
    83108} 
  • molgenis3_3/src/org/molgenis/framework/data/MappingDecorator.java

    r2010 r2013  
    1717public class MappingDecorator<E extends Entity> implements JDBCMapper<E> 
    1818{ 
    19         protected JDBCMapper<E> mapper; 
     19        private JDBCMapper<E> mapper; 
    2020 
    2121        public MappingDecorator(JDBCMapper<E> generatedMapper) 
  • molgenis3_3/src/org/molgenis/framework/data/jdbc/JDBCConnectionHelper.java

    r2000 r2013  
    399399                                                + " " + value + ""); 
    400400                                else 
    401                                         where_clause.append(rule.getField() + " " + operator + " '" + value + "'"); 
     401                                {                
     402                                        if("NULL".equals(value) && operator.equals("=")) where_clause.append(rule.getField() + " IS NULL"); 
     403                                        else where_clause.append(rule.getField() + " " + operator + " '" + value + "'"); 
     404                                } 
    402405                                // } 
    403406                        } 
  • molgenis3_3/src/org/molgenis/framework/data/jdbc/JDBCDatabase.java

    r2006 r2013  
    282282        public <E extends Entity> int add(List<E> entities) throws DatabaseException, IOException 
    283283        { 
     284                if(!this.getLogin().hasEditPermission(entities)) throw new DatabaseException("Add not allowed for this user"); 
    284285                if (entities.size() > 0) return getMapperFor(entities).add(entities); 
    285286                return 0; 
  • molgenis3_3/src/org/molgenis/framework/screen/form/FormController.java

    r2012 r2013  
    305305                try 
    306306                { 
    307                         // reload login 
    308                         view.getRootScreen().getLogin().reload(db); 
     307                        // reload login only on login/logout events 
     308                        // view.getRootScreen().getLogin().reload(db); 
    309309 
    310310                        pager.setDirty(true); 
     
    398398 
    399399                // set form level rights 
    400                 boolean formReadonly = view.isReadonly() || !view.getLogin().hasEditPermission(view.create()); 
     400                boolean formReadonly = view.isReadonly() || !view.getLogin().hasEditPermission(view.create().getClass()); 
    401401                view.setReadonly(formReadonly); 
    402402 
     
    411411                for (E record : allRecords) 
    412412                { 
    413                         boolean rowReadonly = formReadonly || !view.getLogin().hasEditPermission(record); 
     413                        boolean rowReadonly = formReadonly || !view.getLogin().hasEditPermission(record.getClass()); 
    414414 
    415415                        if (rowReadonly) record.setReadonly(true); 
  • molgenis3_3/src/org/molgenis/framework/screen/form/FormScreen.java

    r1994 r2013  
    277277        public boolean isVisible() 
    278278        { 
    279                 return this.getLogin().hasReadPermission(this.create()); 
     279                return this.getLogin().hasReadPermission(this.create().getClass()); 
    280280        } 
    281281 
  • molgenis3_3/src/org/molgenis/framework/server/AbstractMolgenisServlet.java

    r1995 r2013  
    2323 
    2424import javax.naming.NamingException; 
    25 import javax.servlet.ServletConfig; 
    2625import javax.servlet.ServletException; 
    2726import javax.servlet.http.HttpServletRequest; 
     
    242241                {                                        
    243242                        userLogin = createLogin(db, request); 
    244                         if (!userLogin.isAuthenticated() || (request.getParameter("logout") != null && !session.isNew())) 
     243                        if ( (!userLogin.isAuthenticated() && userLogin.isLoginRequired()) || (request.getParameter("logout") != null && !session.isNew())) 
    245244                        { 
    246245                                response.setHeader("WWW-Authenticate", "BASIC realm=\"MOLGENIS\""); 
     
    253252                //((UserInterface)molgenis).setDatabase(db); 
    254253                userLogin = ((UserInterface)molgenis).getLogin(); 
     254                db.setLogin(userLogin); 
    255255 
    256256                // handle request 
     
    263263                        if (FileInput.ACTION_DOWNLOAD.equals(requestTuple.getString(Screen.INPUT_ACTION))) 
    264264                        { 
    265                                 logger.debug(requestTuple); 
     265                                logger.info(requestTuple); 
    266266 
    267267                                File file = new File(db.getFilesource() + "/" 
     
    960960                        if (xref_filter != null && xref_filter != "") for (int i = 0; i < xref_label.size(); i++) 
    961961                        { 
    962                                 q.like((String) xref_label.get(i), xref_filter + "%"); 
     962                                q.like((String) xref_label.get(i), "%"+xref_filter + "%"); 
    963963                                if (i > 0) q.or(); 
    964964                                q.orderASC((String) xref_label.get(i)); 
  • molgenis3_3/src/org/molgenis/framework/style/original/UserInterface.ftl

    r1968 r2013  
    4040                        <td id="navigation"> 
    4141 
    42 <#if username != ""> 
     42<#--if username?exists && username != ""> 
    4343                        <span id="logout"> 
    4444                                Logged in as <b>${username}</b> [<a href="" onClick="logout.submit();return false;">logout</a>] 
     
    4747                                </form> 
    4848                        </span> 
    49 </#if>           
     49</#if-->                 
    5050                                <form name="navigationForm" method="get"> 
    5151                                        <input type="hidden" name="__target" value=""/> 
  • molgenis3_3/src/org/molgenis/generators/screen/FormScreenGen.java.ftl

    r2001 r2013  
    238238</#if> 
    239239                { 
    240                         QueryRule rule = super.getRootScreen().getLogin().getUserFilters(new ${entity}()); 
     240                        QueryRule rule = super.getRootScreen().getLogin().getRowlevelSecurityFilters(new ${entity}()); 
    241241                        if (rule != null /*&& !rule.equals(new QueryRule())*/) 
    242242                                rules.add(rule); 
  • molgenis3_3/src/org/molgenis/generators/servlet/MolgenisServletGen.ftl

    r1995 r2013  
    1919import org.molgenis.framework.Database; 
    2020import org.molgenis.framework.auth.Login; 
    21 import org.molgenis.framework.auth.SimpleLogin; 
    2221import org.molgenis.framework.data.DatabaseException; 
    2322import org.molgenis.framework.screen.UserInterface; 
     
    5049        public Login createLogin( Database db, HttpServletRequest request ) 
    5150        { 
    52                 return new SimpleLogin(); 
     51                return new ${loginclass}(); 
    5352        } 
    5453 
  • molgenis3_3/src/org/molgenis/generators/servlet/MolgenisServletGen.java

    r1983 r2013  
    3636                templateArgs.put("model", model);                
    3737                templateArgs.put("package", model.getName().toLowerCase());              
    38                 templateArgs.put("db_filepath", options.db_filepath);    
     38                templateArgs.put("db_filepath", options.db_filepath); 
     39                templateArgs.put("loginclass", options.auth_loginclass); 
    3940                 
    4041                 
Note: See TracChangeset for help on using the changeset viewer.