craigk5n / webcalendar

WebCalendar is a PHP application used to maintain a calendar for a single user or an intranet group of users. It can also be configured as an event calendar.
http://www.k5n.us/webcalendar.php
GNU General Public License v2.0
149 stars 71 forks source link

Not authorized to edit Layers even as Admin #369

Open marcnyc2001 opened 1 year ago

marcnyc2001 commented 1 year ago

Hello, I am having an issue with LAYERS. I am the ADMIN but when I click on ADMIN>Layers I get a message that says: "!!!You are not authorized" and I am unable to add or even view the current layers.

Can somebody help me get access to this feature, please? Thank you

Tharrington86 commented 10 months ago

I actually discovered this same issue this morning. I tried other admin accounts and got the same message, effectively removing our ability to use layers at all.

marcnyc2001 commented 9 months ago

Have you found a solution?

craigk5n commented 9 months ago

What version are you using. I am unable to reproduce this in v1.9.9.

marcnyc2001 commented 9 months ago

1.2.7

Tharrington86 commented 7 months ago

I have not found a solution yet. I am using the latest version of the calendar. None of my admin accounts can access layers. They all receive the "You are not authorized!" message.

marcnyc2001 commented 7 months ago

me neither. would love to find a solution to this!

Tharrington86 commented 7 months ago

I tried to create a new Admin user and experienced the same issue. Here is a screen shot of what is seen in the console when the !!!You are not authorized message is displayed.

image

max951 commented 5 months ago

Does your admin user have rights to layers?

hc_1322

marcnyc2001 commented 5 months ago

I thought mine does. The issue is I get a "You are not authorized!!!" error so I can't even enable or disable them on my Admin page!

max951 commented 5 months ago

I'm not sure exactly which page you mean that displays the authorization hint. What is the exact path in the address bar?

marcnyc2001 commented 5 months ago

The link is: /calendar/layers.php and the error is: "!!!You are not authorized." Written with 3 exclamation marks at the top of the sentence!

max951 commented 5 months ago

If you have access to the database, can you please check if the the admin user has all access permissions.

You can do this in MySQL with the statement SELECT * FROMwebcal_access_functionWHERE cal_login = 'admin'

or for example in phpMyAdmin, look in table webcal_access_function in the row for user admin. There should be only 'Y's in the permissions column. Like in this Screenshot

image

If there is a 'N' between the 'Y's, your admin user has not all permissions.

marcnyc2001 commented 5 months ago

Yep, they are all set to "YYYYYYYYYYYYYYYYYYYYYYYYYYYY" on my Admin Account

max951 commented 5 months ago

and the login name is 'admin'? If the login name is different, is the admin flag set for this user?

marcnyc2001 commented 5 months ago

No the login name is my username (there is no username named "admin") but in the 'webcal_user' row the column 'cal_is_admin' is set to Y

max951 commented 5 months ago

Sorry, but then I don't know what to do. I would try to debug starting from the layers.php file.

I would try something like this line ?><script>console.log("$ALLOW_VIEW_OTHER=<?php echo $ALLOW_VIEW_OTHER; ?>");</script><?php before the line if ( $ALLOW_VIEW_OTHER != 'Y' )

This shows you the value of parameter $ALLOW_VIEW_OTHER in the browser console.

marcnyc2001 commented 5 months ago

Thanks for your suggestion Max. I tried that but I didn't see a different output in the browser. In the error_log file there are a bunch of these lines:

[09-Feb-2024 11:59:37 America/New_York] PHP Notice: Use of undefined constant id - assumed 'id' in /home/eastside/public_html/calendar/includes/functions.php on line 4789

max951 commented 5 months ago

The obove javascript debug line writes the output in the console, not in the browser itself. You have to use the Browser DevTools ( [F12]-Key )

hc_091

I made this so complicated because the HTML output is not changed and other users are not disturbed by the debugging.

If you can change the HTML output without disturbing other users, then it is of course easier to simply use an echo command instead of the cryptic javascript debug line.

If you are using V1.2.7 the lines if ( $ALLOW_VIEW_OTHER != 'Y' ) echo print_not_auth (7);

should be in lines number 48 and 49.

I assume the line "echo print_not_auth" gives the error message "!!!You are not authorized" if the variable "$ALLOW_VIEW_OTHER" is not 'Y'.

To check this, you can simply insert the line echo '$ALLOW_VIEW_OTHER = ' . $ALLOW_VIEW_OTHER . "<br>\r\n"; before the line with the if statement.

marcnyc2001 commented 5 months ago

By adding that line I get:

$ALLOW_VIEW_OTHER = N !!!You are not authorized.