Userpanel CP

Post custom hacks and enhancements for phpwcms here only. Maybe some of these things will be included in official release later.
User avatar
pico
Posts: 2595
Joined: Wed 28. Jul 2004, 18:04
Location: Frankfurt/M Germany
Contact:

Post by pico »

Hi

the Backend Language is depended from your Browser setting first.
You can also set a default Language to a User by editing the Userprofil in Backend->Admin->Userprofil
Lieber Gott gib mir Geduld - ABER BEEIL DICH
Horst - find me at Musiker-Board
User avatar
wireless
Posts: 138
Joined: Sun 24. Oct 2004, 04:35
Location: Houston, Texas

Post by wireless »

phalancs,

How about a "image" validation to verify it isn't a script registering?

somthing like including this:

Code: Select all

<?php session_start();
$im = imagecreate(45,20);
$im = imagecreate(45,20); 

$blue = imagecolorallocate($im, 0, 0, 255); 
$grey = imagecolorallocate($im, 153, 153, 153); 
$dblue = imagecolorallocate($im, 0, 0, 153);

$x = 5; $w = imagefontwidth(5);
$range = 20 - imagefontheight(5);
for ($i=4; $i<=39; $i=$i+5) {
 imageline($im, $i, 0, $i, 19, $dblue);
} 
for ($i=4; $i<=14; $i=$i+5) {
 imageline($im, 0, $i, 44, $i, $dblue);
}
for ($i=0;$i<strlen($_SESSION['valcode']);$i++) {
imagestring($im, 5, $x, mt_rand(0,$range), $_SESSION['valcode'][$i], $grey);
 $x += $w;
}
header("Content-type: image/png");
imagepng($im); 
imagedestroy($im); 
?>
added to a validation page that the user goes to when they click the activation-link in the email.
phalancs
Posts: 793
Joined: Thu 19. Feb 2004, 05:09
Location: Germany

Post by phalancs »

Cool thanx for the code. I will check that. As I am still enhancing the Registration panel, this comes in very handy. Thanx!

BTW: no supicious machine has registered so far. Anyone who is registered can now see all registered users in the members section. I have implemented a frontend user browsing tool (still work in progress).
2008
User avatar
StudioZ
Posts: 802
Joined: Fri 28. May 2004, 19:57
Location: Québec, Canada
Contact:

Post by StudioZ »

Hi Phalancs :wink:
Just wish to confrm... Is your Register form ready yet ? :roll:
Did I missed something...? :shock:
It is working fine on your site 8)

Cheers,
Image
PhpWCMS Evangelist, -- iRoutier.com Running phpWCMS 1.4.2, r354 -> Great Version!!!!
b.it
Posts: 10
Joined: Fri 14. Apr 2006, 20:15

Re: noch was...

Post by b.it »

ndm wrote:wie gesagt, läuft meine installation jetzt (fast) perfekt.

hab nur noch ein kleines problem :

ich bin an einer 'verbands-homepage', da gibts 3 verschiedene user arten.

- admins (BE)
- redaktoren (BE)
- user (FE)

wenn ich nun die 'unset' befehle in die phpwcms.php einfüge, hat der redaktor, welcher auch kein admin ist, auch kein zugriff mehr auf die artikel.

dieser sollte aber zugriff haben.

kann man das noch ein bisschen separieren ?

als 'vor' lösung habe ich den befehl unset($wcsnav["articles"]); wieder entfehrnt.
jetzt kann ein redaktor mindestens wieder artikel bearbeiten.

weiss jemand rat ?

gruss ndm
ich habs gerade so gelöst:

//restrict frontend-users to frontend

edit: phpwcms.php


FIND:

Code: Select all

define('ACTIVE_REFERER', $_SESSION['REFERER_URL']);
$_SESSION['REFERER_URL'] = PHPWCMS_URL.'phpwcms.php?'.$_SERVER['QUERY_STRING'];
ADD BELOW

Code: Select all

/*--> b.it frontend-user restriction */
if((!empty($_SESSION["wcs_user"])) && ($_SERVER['QUERY_STRING'] !='do=logout')) {
	$sql_query =	"SELECT * FROM ".DB_PREPEND."phpwcms_user WHERE usr_login='".$_SESSION["wcs_user"]."' AND (usr_fe=1 OR usr_fe=2);";
        	if(($result = mysql_query($sql_query))&&(mysql_num_rows($result)==0)) {
            die( "<a href='index.php'>SORRY, NO ACCESS </a>");
          }
	} 
/*<--*/ 


es empfiehlt sich, die felder für messages im userpanel leer zu lassen, um vom frontend keine link zum backend zu haben

//don't fill in the messenger-strings in the user-panel and you'll have no traceable link from the front- to the backend
Last edited by b.it on Sat 15. Apr 2006, 14:57, edited 2 times in total.
jamo
Posts: 13
Joined: Wed 12. Apr 2006, 09:25

Post by jamo »

Großes Lob ! Das ist wirklich ein tolles Login-Panel, ich habe nur ein
Problem mit dem Passwort-Reset. Wenn ich testweise einen Benutzer und
die EMail Adresse eingeben und auf >go< klicke, erscheint immer nur mein Fehlertext. Die Daten (E-Mail Adresse und Benutzername) von meinem Testbenutzer stimmen aber definitiv (ich kann mich mit dem Benutzer ja auch normal anmelden) Das Löschen und Neuanlegen bringt
auch nichts.
Was mache ich denn falsch?Wo muss ich was ändern?Ich hoffe,ihr helft mir.
larmann
Posts: 311
Joined: Thu 23. Jun 2005, 10:51
Location: Hamburg
Contact:

Frontend User im Backend

Post by larmann »

Hallo,

******
English below
******

ich habe noch nicht rausfinden können, wie man verhindert, dass ein Frontend User im Backend einzelne Artikel unsichtbar schalten kann. Bei mir werden dem Frontend User - anders als auf enym - auch die Artikel im Backend angezeigt.

Und eine zweite Frage: Wo und wie werden die Profildaten der ganzen Frontend User den anderen Frontend Usern angezeigt?

*******

How comes, that my frontend user can access the articles via backend and can switch them from visible to not visible? This is not the case on the site enym.com

And a second question: How and where can frontend users watch the profile data of all the other frontend users?

Thank you!
phalancs
Posts: 793
Joined: Thu 19. Feb 2004, 05:09
Location: Germany

Post by phalancs »

Hi

@jamo: Bitte beachte folgendes: Den Administratoren ist aus Sicherheitsgründen das Zurücksetzen des Passworts im Frontend nicht gestattet. Evtl. musst Du es einfach mal mit einem FE/ BE User probieren.

//Administrators are not allowed to reset their passwords (please check that).

@laarmann: Man kann die Artikelsection fürs Backend bzgl. der FE User deaktivieren (siehe hinweise in der install.txt). Du hast aber Recht, dass FE / BE / FEBE User leider trotzdem theoretisch in der Lage sind Artikel unsichtbar zu schalten (was ich letztendlich als äußerst seltsam empfinde). Das hat was mit der Rechteverwaltung zu tun, ich hoffe dass sich daran demnächst was ändert.
Wenn jemand nen einfachen Hack dafür weiss, imme rher damit.

//Yes FE users can theoretically still diasble articles, if anyone has afix for that "bug" please let us know. Anyways you can disbale this section for FE users (see hints in install.txt).


Profile data:
Schade, die Funktion funzt noch gar nicht, obwohl sie durch das gelogge Teil langsam ganz interessant sein könnte. Komischerweise hatte sich anscheinend noch nie im Forum dafür interessiert. Ich bin aber heiss drauf. :)

//That is a very interesting topic. I already checked the forum earlier about this function, i wanted to implement a CP that shows them and makes them editable - but this function seems not yet to be finished.


@StudioZ: Ok, some lag occured... Yes functionality is working properly now. But the thing is still very limited. I am still working on the possibility to add necessary field and store data in the db-profiule section.
This is why I considered some problems. The phpwcms-profile thingy does not work yet :(

A real finished Registration THing should include newsletter subscription and profile functionality. Both things are not yet finished in phpwcms...
grrrrr
2008
b.it
Posts: 10
Joined: Fri 14. Apr 2006, 20:15

Post by b.it »

phalancs wrote:Hi


@laarmann: Man kann die Artikelsection fürs Backend bzgl. der FE User deaktivieren (siehe hinweise in der install.txt). Du hast aber Recht, dass FE / BE / FEBE User leider trotzdem theoretisch in der Lage sind Artikel unsichtbar zu schalten (was ich letztendlich als äußerst seltsam empfinde). Das hat was mit der Rechteverwaltung zu tun, ich hoffe dass sich daran demnächst was ändert.
Wenn jemand nen einfachen Hack dafür weiss, imme rher damit.

//Yes FE users can theoretically still diasble articles, if anyone has afix for that "bug" please let us know. Anyways you can disbale this section for FE users (see hints in install.txt).
@phalancs:
hi, danke zunächst mal für die super arbeit.

schau dir mal meine hack oben an. reine fe user haben eine 0 im feld usr_fe in der Tabelle, reine be-user eine 1, FEBE eine 2.
im login.php wird auf diese art unterschieden, benutzer mit einer 0 in diesem feld werden nicht in die auswahl fürs backend-login einbezogen.

mit einer überprüfung auf dieses feld liesse sich auch die anzeige des posteingangs für reine frontend-user unterdrücken.

der obige hack verhindert das laden von phpwcms.php für reine FE-user

statt dem DIE-befehl lässt sich natürlich auch ein redirect auf die startseite einbauen

//phpwcms decides in login.php on the field usr_fe wether a user is allowed to access the backend or not (needs a value of 1 or 2)
larmann
Posts: 311
Joined: Thu 23. Jun 2005, 10:51
Location: Hamburg
Contact:

Post by larmann »

English below
++++++


Ich habe den oben angegebenen Code in die phpwcms.php eingebaut. Eigentlich sah alles anfangs toll aus, aber:

wenn ich mich als Frontend User ausloggen will (ich klicke auf den entsprechenden Link) erhalte ich die Meldung "Sorry - No Access!" von der phpwcms.php?do=logout. Wenn ich im Browser zurück gehe, bin ich nicht ausgeloggt. Als Frontend User kann ich mich nun nicht mehr ausloggen. Ich leere also den Browser-Cache und logge mich als Admin ein: Nun sehe ich im Backend, dass neben mir auch noch mein einziger Frontend User zwei mal eingeloggt ist. Wenn das so weiter geht wird es bald auf der linken Seite etwas voll werden :-)

Nebenbei: Wurde in den Diskussionsbeiträgen der letzten 10 Seiten eigentlich irgendwo mal erklärt, wo man das Layout des Userpanels so ändert, dass es in eine schmale 128px Tabellenspalte passt? Angesprochen wurde es (vor fünf Seiten), aber erklärt nicht, oder?


Danke!

+++++++
I added the above mentioned code to the phpwcms.php. Everything appeared to be nice, but:

if I'm logged in as a frontend user and I want to log out (I use the link respectible) I get the message "Sorry - No Access!" from the phpwcms.php?do=logout. If I browse back to the previous site, I realize that I'm not logged out. Being a frontend user I can't log out anymore :-( I emty the browser cache and log in as an admin again: Now, in the backend, I see the one and only existing frontend user logged in twice (on the left site of the backend menue). If this continues to add up each time a frontend user logs in the left site will be full stuffed soon :-)

BTW: Was there any explanation on the last 10 pages of discussion where and how one can edit the layout of the userpanel? I would like to put it in a 128px table column. It was mentioned somewhere (five pages ago), but wasn't explained, right?


Thank you!
b.it
Posts: 10
Joined: Fri 14. Apr 2006, 20:15

Post by b.it »

larmann wrote:English below
++++++


Ich habe den oben angegebenen Code in die phpwcms.php eingebaut. Eigentlich sah alles anfangs toll aus, aber:

wenn ich mich als Frontend User ausloggen will (ich klicke auf den entsprechenden Link) erhalte ich die Meldung "Sorry - No Access!" von der phpwcms.php?do=logout.
+++++++
I added the above mentioned code to the phpwcms.php. Everything appeared to be nice, but:

if I'm logged in as a frontend user and I want to log out (I use the link respectible) I get the message "Sorry - No Access!" from the phpwcms.php?do=logout.
Thank you!
fiel mir auch gerade auf, hab den code oben angepasst

//: just realized it myself, edited the code above

Changelog:

Find

Code: Select all

/*--> b.it frontend-user restriction */
if(!empty($_SESSION["wcs_user"])) {
replace with:

Code: Select all

/*--> b.it frontend-user restriction */
if((!empty($_SESSION["wcs_user"])) && ($_SERVER['QUERY_STRING'] !='do=logout')) {
larmann
Posts: 311
Joined: Thu 23. Jun 2005, 10:51
Location: Hamburg
Contact:

Post by larmann »

One more problem: If I (admin or backend user) log into the frontend (!) I'm not redirected to the members area (where all the frontend users are redirected to), but to the index.php

Can this be chanced somewhere?

Thank you for your work and contribution to the community!
jamo
Posts: 13
Joined: Wed 12. Apr 2006, 09:25

Post by jamo »

phalancs wrote:Hi

@jamo: Bitte beachte folgendes: Den Administratoren ist aus Sicherheitsgründen das Zurücksetzen des Passworts im Frontend nicht gestattet. Evtl. musst Du es einfach mal mit einem FE/ BE User probieren.
Hi phalancs, danke für deine Antwort,aber ich scheine hier irgendwas falsch zu verstehen und falsch zu machen :(
Ich bin ja doch nirgends mehr als Admin anmeldet, wenn ich den Namen und die EMail Adresse des FE Users, den ich halt entsprechend vorher angelegt habe, in die Felder Eingabe ,kommt halt nicht meine erstellte Meldung "das Passwort wird ihnen zugeschickt", sondern die für eine falsche Eingabe. Es erscheint also so, als wäre entweder der Benutzername oder die EMail Addi falsch, was aber definitv nicht der Fall ist. Ich wollte nur mal mit dem ganzen simulieren,wenn ein FE User sein Kennwort vergessen hat,wie gesagt ich bin nicht als Admin angemeldet.
Irgenwdo habe ich bestimmt den totalen Denkfehler oder warum werden die FE Userdaten nicht angenommen?
b.it
Posts: 10
Joined: Fri 14. Apr 2006, 20:15

Post by b.it »

larmann wrote:One more problem: If I (admin or backend user) log into the frontend (!) I'm not redirected to the members area (where all the frontend users are redirected to), but to the index.php

Can this be chanced somewhere?

Thank you for your work and contribution to the community!
try the following:

edit include\inc_front\content\cnt203.article.inc.php

find

Code: Select all


	if($login_passed) {
		mysql_query("INSERT INTO ".DB_PREPEND."phpwcms_userlog ".
			"(logged_user, logged_username, logged_start, logged_change, ".
			"logged_in, logged_ip, logged_section) VALUES ('".
			$wcs_user."', '".$_SESSION["wcs_user_name"]."', ".time().", ".
			time().", 1, '".$_SERVER['REMOTE_ADDR']."', '".intval($_SESSION['wcs_user_fe'])."');");			
		

if($_SESSION['wcs_user_fe'] == "0") {
	

Replace with


Code: Select all


	if($login_passed) {
		mysql_query("INSERT INTO ".DB_PREPEND."phpwcms_userlog ".
			"(logged_user, logged_username, logged_start, logged_change, ".
			"logged_in, logged_ip, logged_section) VALUES ('".
			$wcs_user."', '".$_SESSION["wcs_user_name"]."', ".time().", ".
			time().", 1, '".$_SERVER['REMOTE_ADDR']."', '".intval($_SESSION['wcs_user_fe'])."');");			
		

/*--> bit*/
		//if($_SESSION['wcs_user_fe'] == "0") {
		if($_SESSION['wcs_user_fe'] <= "2") {
/*<--*/
quick and dirty, but works for me ;)

BTW: I edited index.php to get a proper .ehm.. user-display-thingie:

find

Code: Select all


// define VISIBLE_MODE 
// 0 = frontend (all) mode 
// 1 = article user mode 
// 2 = admin user mode 
if(empty($_SESSION["wcs_user_id"])) { 
define('VISIBLE_MODE', 0); 
} else if($_SESSION["wcs_user_fe"] == 0) { 
define('VISIBLE_MODE', 2); 
} else { 
define('VISIBLE_MODE', $_SESSION["wcs_user_admin"] != 1 ? 0 : 2); 
} 
 
replace with

Code: Select all


/*--> 
// define VISIBLE_MODE
// 0 = frontend (all) mode
// 1 = article user mode
// 2 = admin user mode
if(empty($_SESSION["wcs_user_id"])) {
define('VISIBLE_MODE', 0);
} else if($_SESSION["wcs_user_fe"] == 0) {
define('VISIBLE_MODE', 2);
} else {
define('VISIBLE_MODE', $_SESSION["wcs_user_admin"] != 1 ? 0 : 2);
} 
*/

// define VISIBLE_MODE 
// 0 = frontend (all) mode 
// 1 = article user mode 
// 2 = admin user mode 
if(empty($_SESSION["wcs_user_id"])) { 
define('VISIBLE_MODE', 0); 
} else if(($_SESSION["wcs_user_fe"] <= 2) && ($_SESSION["wcs_user_admin"] != 1)) { //changed ==0 <=2 and && ff
define('VISIBLE_MODE', 2); //TODO: maybe should be 1 but articles don't  display -> check...
} else { 
define('VISIBLE_MODE', $_SESSION["wcs_user_admin"] != 1 ? 0 : 2); 
} 
/*<--*/ 


and

find

Code: Select all



	if(VISIBLE_MODE == 1 || VISIBLE_MODE == 2) {
		$content['page_end']  = '<div id="VisualMODE" style="position:absolute;left:5px;bottom:5px;padding:5px;z-index:1;background-color:#FF3300;color:#FFFFFF;border:1px solid #000000;">';
		$content['page_end'] .= VISIBLE_MODE == 1 ? 'user: ' : 'admin: ';
		$content['page_end'] .= html_specialchars($_SESSION['wcs_user']);
		$content['page_end'] .= "</div>\n</body>\n</html>";
	} else {
		$content['page_end'] = "</body>\n</html>";
	}

replace with

Code: Select all


/*--> User Thingie Workaraound 
	if(VISIBLE_MODE == 1 || VISIBLE_MODE == 2) {
		$content['page_end']  = '<div id="VisualMODE" style="position:absolute;left:5px;bottom:5px;padding:5px;z-index:1;background-color:#FF3300;color:#FFFFFF;border:1px solid #000000;">';
		$content['page_end'] .= VISIBLE_MODE == 1 ? 'user: ' : 'admin: ';
		$content['page_end'] .= html_specialchars($_SESSION['wcs_user']);
		$content['page_end'] .= "</div>\n</body>\n</html>";
	} else {
		$content['page_end'] = "</body>\n</html>";
	}
*/

		if(VISIBLE_MODE == 1 || VISIBLE_MODE == 2) {
		$content['page_end']  = '<div id="VisualMODE" style="position:absolute;left:5px;bottom:5px;padding:5px;z-index:1;background-color:#003388;color:#FFFFFF;border:1px solid #000000;">';
		$content['page_end'] .= $_SESSION["wcs_user_admin"] != 1 ? 'user: ' : 'admin: ';
		$content['page_end'] .= html_specialchars($_SESSION['wcs_user']);
		$content['page_end'] .= "</div>\n</body>\n</html>";
	} else {
		$content['page_end'] = "</body>\n</html>";
	}
/*<--*/
Last edited by b.it on Sat 15. Apr 2006, 21:45, edited 1 time in total.
larmann
Posts: 311
Joined: Thu 23. Jun 2005, 10:51
Location: Hamburg
Contact:

Post by larmann »

Hi b.it

I didn't get your second "display-thingie" code blog. Where should I integrate your code? In the index.php in the root? And why is it twice? And where should I ad the last code blog in the index.php?

BTW: There is an other strange thing going on: Ones in a while when I commit changes in the backend (as admin) and I hit "save" then the system switches to frontend. It doesn't log me out anyway - if I hit the browsers back button I am in the backend again. If this happens then the frontend site that is shown is: /index.php?internes although usually it should actually be /internes.phtml

Sorry for asking so much. But adtually, I don't understand to much of the code.
Post Reply