tmcneer
01/31/2023, 4:52 PMwebsolete
01/31/2023, 5:02 PMrequireAdmin( session );
or requireMember( session );
where perms are stored in the sessiontmcneer
01/31/2023, 5:52 PMwebsolete
01/31/2023, 6:29 PMtmcneer
01/31/2023, 6:42 PMwebsolete
01/31/2023, 6:43 PMcomponent accessors="true" {
property settings;
property beanFactory;
property common;
property courseService;
property moduleService;
property emailService;
property securityService;
public any function init(fw) {
variables.fw = fw;
return this;
}
public void function list(required struct rc) {
requireSysadmin( session );
param name="rc.qp" default="1";
param name="rc.so" default="al";
param name="rc.sortdir" default="asc";
param name="<http://rc.ss|rc.ss>" default="";
var data = variables.courseService.list(
qp=rc.qp,
qnum=variables.settings.display.qnum,
sort=rc.so,
sortdir=rc.sortdir,
ss=<http://rc.ss|rc.ss>,
includehierarchy=true,
cache=false
);
.....
}
public void function edit(required struct rc) {
requireClientAdmin( session );
param name="rc.id" default="0"; // when coming from list
param name="rc.mode" default=""; // edit, blank when coming from list
....
}
private void function requireSysadmin( required struct session ) {
if(!arguments.session.isSysAdmin()) {
variables.fw.redirect("error.unauthorized");
}
}
private void function requireClientAdmin( required struct session ) {
if(!arguments.session.isClientAdmin() {
variables.fw.redirect("error.unauthorized");
}
}
private void function requireAccountAdmin( required struct session ) {
if(!arguments.session.isAccountAdmin()) {
variables.fw.redirect("error.unauthorized");
}
}
}
websolete
01/31/2023, 6:44 PMwebsolete
01/31/2023, 6:45 PMwebsolete
01/31/2023, 6:48 PMwebsolete
01/31/2023, 6:49 PMtmcneer
01/31/2023, 6:52 PMwebsolete
01/31/2023, 6:53 PMwebsolete
01/31/2023, 6:54 PMtmcneer
01/31/2023, 6:59 PMwebsolete
01/31/2023, 7:02 PMtmcneer
01/31/2023, 7:03 PMwebsolete
01/31/2023, 7:04 PMtmcneer
01/31/2023, 7:05 PMwebsolete
01/31/2023, 7:05 PMsession.allowedActions = ["main.*","user.list","user.edit"]
so you can easily match the requested route to whether they can access it. but i think that can get unwieldy if you have too many possible variations