Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

All other Modules /

Discuss all other Modules here.

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

SOLVED - CustomLoginForm - GroupDecorator - SS 2.4.2

Go to End

2 Posts   1168 Views


Community Member, 267 Posts

30 November 2010 at 11:22pm

Edited: 30/11/2010 11:23pm


Using SS 242

I'm using the GroupDecorator + CustomLoginForm - modified the _config..
Security-> new group
redirect to page 'downloads'
created new member
admin group -> checked the box 'go to admin area'
-> saved.

But when i log-in with the redirecter account.. i get the message:
-> I'm sorry, but you can't access that part of the CMS. If you want to log in as someone else, do so below

Does this script malfunction with SS 2.4.2 ?


   class GroupDecorator extends DataObjectDecorator {
	function augmentSQL(SQLQuery &$query) {}
	public function extraStatics(){
		return array(
			'db' => array(
				"GoToAdmin" => "Boolean"
			'has_one' => array(
				"LinkPage" => "SiteTree"


	public function updateCMSFields(FieldSet &$fields) {
	   $fields->addFieldToTab("Root.Members", new CheckboxField("GoToAdmin", " Go to Admin area"), 'Members');
	   $fields->addFieldToTab("Root.Members", new TreeDropdownField("LinkPageID", "Or select a Page to redirect to", "SiteTree"), 'Members');




class CustomLoginForm extends MemberLoginForm {

	// this function is overloaded on our sublcass (this) to do something different
	public function dologin($data) {
		if($this->performLogin($data)) {
				echo 'done';
		} else {
			if($badLoginURL = Session::get("BadLoginURL")) {
			} else {
	public function redirectByGroup($data) { 	
		// gets the current member that is logging in.
		$member = Member::currentUser();
		// gets all the groups.
		$Groups = DataObject::get("Group");
		//cycle through each group	
		foreach($Groups as $Group){
			//if the member is in the group and that group has GoToAdmin checked
			if($member->inGroup($Group->ID) && $Group->GoToAdmin == 1) 
				//redirect to the admin page
	 			Director::redirect(Director::baseURL() . 'admin' );
				return true;
			//otherwise if the member is in the group and that group has a page link defined
			elseif($member->inGroup($Group->ID)  && $Group->LinkPageID != 0) 
				//Get the page that is referenced in the group		
				$Link = DataObject::get_by_id("SiteTree", "{$Group->LinkPageID}")->URLSegment;
				//direct to that page
				Director::redirect(Director::baseURL() . $Link);
				return true;
		//otherwise if none of the above worked return fase
		return false;



Object::add_extension('Group', 'GroupDecorator');



Community Member, 267 Posts

30 November 2010 at 11:34pm

My bad...
Forgot to add
Object::useCustomClass('MemberLoginForm', 'CustomLoginForm');
in the config...