Code Monkey home page Code Monkey logo

service-desk's Introduction

Service Desk

Build Status Documentation Status

Application for support team who need to check, lock, unlock and reset user passwords.

See list of features.

Screenshot

❗ With great power comes great responsibility: this application allows to reset password of any user, you must protect it and allow access only to trusted users.

service-desk's People

Contributors

alexandre-karim avatar cmaudoux avatar coudot avatar faust64 avatar flesueur avatar maxbes avatar mikej312 avatar philhaworteks avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

service-desk's Issues

Displaying Items Manager & Secretary

Hello hello,

I wanted to change displayed items, like below with "manager":

# Search
$search_attributes = array('uid', 'cn', 'mail');
$search_result_items = array('identifier', 'mail', 'manager');

However, the attribute isn't displayed. If I change the line in the config file with the config below, it is displayed, but as far as I understand, the attribute should actually be listed as a link ("dn_link") to the user, instead of "text":
'manager' => array( 'attribute' => 'manager', 'faclass' => 'user-circle-o', 'type' => 'text' ),

Not sure, if the display format "dn_link" is actually supported or not, therefore, is this an issue or "missing feature"?

Thanks in advance and wishing a great evening.

Display pwdPolicySubentry

The pwdpolicysubentry is defined by default in $display_password_items but not in $attributes_map so it is never displayed. This is part of issue #43.

Allowing this would also require to create the dn_link displayer as reported in issue #51

Possibility to lock an account

If the account is active, we may want to lock it.

It requires to set value 000001010000Z in attribute pwdAccountLockedTime

About account lock issues

i have install service-desk on centos 7 success ,but i find some question:

  1. Cannot disable user account on web page
  2. Unable to unlock user account on web page
  3. actually the user account has been locked, but the web page shows that the account is not disabled

Split debug and debug_smarty

We should not join debug on server side and on client side. This would allow to debug on server side without any impact for users.

PostHook

Would be great to add a posthook like we have in Self Service Password

Add prehook

We should have a prehook that could for example refuse a password change (because the password should be changed from another place for example, or do not respect some requirements)

Docker Container

Having an official Docker container for this would be pretty nice.

I can provide a PR for that, with docker-compose.

Append an option to add a "Generate new password" button

Button to generate a random password based on a RegExp .

When admin click on this button, password is updated automatically in LDAP, hook is processed and new password is displayed or sent by email to user. Admin does not have to know the new password.

LTB Service Desk Active Directory Support

Hi,

I'm trying to get ltb service desk to work with Microsoft Active Directory but some features like "Change password" and "Lock account" don't work, so I've been looking for a useful log file to debug this behavior with no luck. I also did not get results activating the debug mode.

So my question is: This application works with Active Directory?

My environment is:

  • Red Hat Enterprise Linux 8.5
  • Microsoft Active Directory 2019
  • PHP versión 7.4
  • Smarty 3

My config.inc.local.php

$debug = false;
$ldap_url = "ldaps://ip.to.my.ad:636";
$ldap_starttls = false;
$ldap_binddn = "CN=Administrator,CN=Users,DC=mydomain,DC=cnp";
$ldap_bindpw = "MyAdminPassword";
$ldap_base = "DC=mydomain,DC=cnp";
$ldap_user_base = $ldap_base;
$ldap_user_filter = "(objectClass=user)";
$ldap_size_limit = 100;

Lock User feature enabled but the lock botton not showing on dashboard

lock user feature is enabled by set
$use_lockaccount = true;

and default policy is applied correctly by set
$ldap_default_ppolicy = "cn=default,ou=ppolicy,dc=example,dc=com";

but on the dashboard. there is a only text shows:
Account is not locked

there is no button for lock the user.

btw, unlock botton works fine.
Anyone knows how to troubleshoot this issue or shed some light on this please?
thanks advance!

Remove datepicker

We call datepicker in our code but it is not used, it should be removed

Ability to add new users

If this project would have the ability to add users in a tree, it could replace the old phpldapadmin and LDAP-Account-Manager
in a lot of day-to-day use-cases.

Send a mail to administrator

Linked to #71 and #72

If administrator identity is known, send a mail to confirm the action has been done. It will be a configuration option of course.

Multi tenancy

Possibility to load different configurations depending on the host name.

userAccountControl

Manage composer dependencies in RPM and Debian packaging

For RPM, I suggest the easy way: take the distribution tarball as source, which already contains vendor dependencies, remove system packaged dependencies in build.

For Debian, seems the process is to patch the composer.json/composer.lock from sources and run the composer update during build. Quite more complex than relying on the distribution tarball, any help is welcomed.

Add a page to edit user attributes

We could add a page where we can update some attributes of the user (the list of available attributes will be a configuration parameter)

A specific option can be added to update the photo too.

Question: olcAccess rights for locking/unlocking accounts

Hello,

I made a dedicated ldap user to be used by Service-Desk with the following olcAccess :

dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {1}to dn.subtree="ou=ppolicies,dc=dom" by dn="cn=bot ldap,ou=users,dc=dom" read by * break
-
add: olcAccess
olcAccess: {2}to dn.subtree="ou=users,dc=dom" attr=userPassword by dn="cn=bot ldap,ou=users,dc=dom" write by * break
-
add: olcAccess
olcAccess: {3}to dn.subtree="ou=users,dc=dom" by dn="cn=bot ldap,ou=users,dc=dom" read by * break

Everything is working well except for the locking/unlocking feature of LDAP accounts.
I can't manage to get the proper access rules for that feature, if anyone could share it, I would be a happy man.

thanks

The service desk does not show that the password has expired, use non-ldap management users

Recently, a problem was discovered in the process of using the service desk。
The service desk does not show that the password has expired, use non-ldap management users

If you use the ldap administrator user to query the account, it can show that the account password has expired on the web page:
1

If you use ldap as a non-administrator user, and you can query the account, it cannot show that the account password has expired on the web page:
2

The content of the service desk configuration file is as follows:

3

Send a mail to user after password reset

We should add the possibility to send a mail to user after its mail was changed. This require to use PHPMailer (we should use the same configuration parameter as Self Service Password).

To be discussed: an option to include the new password in the mail (as the user could be forced to change it at first login). It is a security flaw and should be disabled by default, but could be useful in some organizations.

User creation workflow

The goal is to let users register their account, and only store them in LDAP directory after an admin approval.

  • Create a public form (for example in public/register_account.php)
  • Store submitted data in a temporary file / LDAP branch?
  • Create a dashboard to list all pending registration requests
  • Accept or deny a registration request

Audit trail

We could create an audit log file where all actions done in Service Desk will be regsitered. We can get the connected user trough some en var (REMOTE_USER) to log it with the action. This audit log would be disabled by default.

Configure cache dir and template cache dir

Installing the software with SELinux enabled is not working, because cache dir and template cache dir are in /usr and should be in /var/cache

We should be able to configure these directories and adapt packaging files

Log who has done the action (audit trail)

For now, access to Service Desk is anonymous, even if we recommend to add authentication (Web Server or SSO).

We should be able to get the identity of connected user and log every action done.

PHP Fatal error: Uncaught TypeError: Cannot access offset of type string on string

With PHP 8.1, when displaying an entry:

[Tue Sep 13 14:50:17.575299 2022] [php:error] [pid 27774] [client 127.0.0.1:40204] PHP Fatal error:  Uncaught TypeError: Cannot access offset of type string on string in /usr/local/service-desk/htdocs/display.php:82\nStack trace:\n#0 /usr/local/service-desk/htdocs/index.php(103): require_once()\n#1 {main}\n  thrown in /usr/local/service-desk/htdocs/display.php on line 82, referer: http://sd.example.com/index.php?page=searchlocked

Fresh installation - Cannot access Service Desk

Hi! We have installed Service Desk in Ubuntu 22.04 using Debian/Ubuntu packages.

After the package and dependencies installation, we enabled the site (using a2ensite service-desk.conf). Then, we receive an error 500 message.

Access messages are logged in sd_access.log but nothing is logged in sd_error.log.

Could you give us further assistance?

Thank you!

Hashing passwords with password reset

Dear team,

I am also using your password self service tool. Both work very well.
Currently I have no default password policy in my openldap server. When I do a password reset with "service desk" tool, the password get stored in clear format in ldap.
In self service password I can define how it is stored in ldap.

Is there a way to configure it in service desk similarily as in self service password?

Config parameter in self service password with example hash:
$hash = "SSHA";

Thanks in advance!

Display expiration date

We could display the account expiration date in policy info. We already compute this date to know if the password is expired or not.

Using default policy option does not seems to work

Hello,

I'm trying to debug the default policy option. Here is a sample of my conf :

$ldap_url = "ldap://myldap.com";
$ldap_starttls = false;                                  
$ldap_binddn = "cn=admin,dc=mydomain";
$ldap_bindpw = "pwd";
$ldap_base = "dc=mydomain";                                  
$ldap_user_base = "ou=users,".$ldap_base;          
$ldap_user_filter = "(objectClass=inetOrgPerson)";
$ldap_group_filter =       
$ldap_size_limit = 100;  
$ldap_default_ppolicy = "cn=default,ou=ppolicies,dc=mydomain"; 

And here is my policy :

dn: cn=default,ou=ppolicies,dc=mydomain
cn: default
objectClass: pwdPolicy
objectClass: pwdPolicyChecker
objectClass: device
objectClass: top
pwdAllowUserChange: TRUE
pwdAttribute: userPassword
pwdCheckQuality: 2
pwdCheckModule: pqchecker.so
pwdExpireWarning: 0
pwdFailureCountInterval: 0
pwdGraceAuthNLimit: 0
pwdInHistory: 0
pwdLockout: TRUE
pwdLockoutDuration: 7200
pwdMaxAge: 0
pwdMaxFailure: 5
pwdMinAge: 0
pwdMinLength: 8
pwdMustChange: FALSE
pwdSafeModify: FALSE

And my pqchecker configuration (it's the default):

# Data format: 0|UULLDDSS@)..
# Or         : 1|UULLDDSS@)..
#
# 1st character is the modified passwords broadcast flag. 1 -> Broadcast, 0 -> Don't broadcast
# 2nd character is a separator
# U: Uppercase, L: Lowercase, D: Digit, S: Special characters -> from 3rd to 10th charater.
# From the 11th character begins the list of forbidden characters
# Defaulti: No broadcast, 1 Uppercase, 1 Lowercase, 1 digit, 1 Special and no forbidden characters
# https://www.meddeb.net/pqchecker/?Idx=2
0|01010100

But if I reset a password from Service-Desk, It will accept anything (qwerty for my latest test).
In my ldap logs I can see there is a query for my password policy but that's all. And for service-desk, theses are my only logs :

PHP Notice:  Undefined variable: smarty_compile_dir in /usr/share/service-desk/htdocs/index.php on line 38, referer: https://service-desk.url/index.php?page=display&dn=cn=testUserFirstName%20testUserName,ou=users,dc=domain&resetpasswordresult=passwordchanged
PHP Notice:  Undefined variable: smarty_cache_dir in /usr/share/service-desk/htdocs/index.php on line 39, referer: https://service-desk.url/index.php?page=display&dn=cn=testUserFirstName%20testUserName,ou=users,dc=domain&resetpasswordresult=passwordchanged
172.20.0.6 - myuser [06/Dec/2020:16:40:35 +0100] "POST /index.php?page=resetpassword HTTP/1.1" 302 4737 "https://service-desk.url/index.php?page=display&dn=cn=testUserFirstName%20testUserName,ou=users,dc=domain&resetpasswordresult=passwordchanged" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:82.0) Gecko/20100101 Firefox/82.0"
PHP Notice:  Undefined variable: smarty_compile_dir in /usr/share/service-desk/htdocs/index.php on line 38, referer: https://service-desk.url/index.php?page=display&dn=cn=testUserFirstName%20testUserName,ou=users,dc=domain&resetpasswordresult=passwordchanged
PHP Notice:  Undefined variable: smarty_cache_dir in /usr/share/service-desk/htdocs/index.php on line 39, referer: https://service-desk.url/index.php?page=display&dn=cn=testUserFirstName%20testUserName,ou=users,dc=domain&resetpasswordresult=passwordchanged
172.20.0.6 - myuser [06/Dec/2020:16:40:35 +0100] "GET /index.php?page=display&dn=cn=testUserFirstName%20testUserName,ou=users,dc=domain&resetpasswordresult=passwordchanged HTTP/1.1" 200 2954 "https://service-desk.url/index.php?page=display&dn=cn=testUserFirstName%20testUserName,ou=users,dc=domain&resetpasswordresult=passwordchanged" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:82.0) Gecko/20100101 Firefox/82.0" 

Any hint ?

Add a page to edit user attributes

We could add a page where we can update some attributes of the user (the list of available attributes will be a configuration parameter)

A specific option can be added to update the photo too.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.