{"action":"opened","number":494,"pull_request":{"url":"https://api.github.com/repos/thebuggenie/thebuggenie/pulls/494","id":120319765,"html_url":"https://github.com/thebuggenie/thebuggenie/pull/494","diff_url":"https://github.com/thebuggenie/thebuggenie/pull/494.diff","patch_url":"https://github.com/thebuggenie/thebuggenie/pull/494.patch","issue_url":"https://api.github.com/repos/thebuggenie/thebuggenie/issues/494","number":494,"state":"open","locked":false,"title":"LDAP module refactoring and CLI","user":{"login":"azaghal","id":809269,"avatar_url":"https://avatars2.githubusercontent.com/u/809269?v=3","gravatar_id":"","url":"https://api.github.com/users/azaghal","html_url":"https://github.com/azaghal","followers_url":"https://api.github.com/users/azaghal/followers","following_url":"https://api.github.com/users/azaghal/following{/other_user}","gists_url":"https://api.github.com/users/azaghal/gists{/gist_id}","starred_url":"https://api.github.com/users/azaghal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/azaghal/subscriptions","organizations_url":"https://api.github.com/users/azaghal/orgs","repos_url":"https://api.github.com/users/azaghal/repos","events_url":"https://api.github.com/users/azaghal/events{/privacy}","received_events_url":"https://api.github.com/users/azaghal/received_events","type":"User","site_admin":false},"body":"This set of changes involves some major refactoring of the LDAP module code. The following major changes are included:\r\n\r\n- Update to error handler in core to ignore suppressed PHP errors (commands where `@` operator is used).\r\n- Update to handling of auto-login functionality in the core.\r\n- Updated to LDAP structure for Vagrant/Ansible dev machine in order to provide more variety for testing LDAP.\r\n- Business logic in LDAP module has been moved outside of controller and into the module class making it more easily accessible elsewhere in the code.\r\n- Business logic has been rewritten to be more resilient, better structured, and with less duplication of code.\r\n- Removed defaults for a number of settings. These were applied during the save operation automatically, which could look confusing (you save one set of things on the page, you view different set of things on the redirect).\r\n- Expanded connection testing to cover counting users available and to check if currently logged-in user is available in LDAP directory as well. Should help reduce chance of getting locked-out.\r\n- Settings page has been updated to have better help that matches LDAP terminology more closely, and to have all the settings described in more detailed.\r\n- Implemented CLI commands for testing, importing users, and pruning users.\r\n\r\n**Note to reviewer:**\r\n\r\nPlease pay special attention to changes in the core classes. At least in case of auto-login it is impossible to test it against any other module (LDAP authentication module is one of its kind in the project atm). Code around auto-login was a bit funky, so I tried to make it less complicated, and I _think_ I got it right.","created_at":"2017-05-12T13:10:46Z","updated_at":"2017-05-12T13:10:46Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/thebuggenie/thebuggenie/pulls/494/commits","review_comments_url":"https://api.github.com/repos/thebuggenie/thebuggenie/pulls/494/comments","review_comment_url":"https://api.github.com/repos/thebuggenie/thebuggenie/pulls/comments{/number}","comments_url":"https://api.github.com/repos/thebuggenie/thebuggenie/issues/494/comments","statuses_url":"https://api.github.com/repos/thebuggenie/thebuggenie/statuses/4c1f01285b9a728189f70f388741f5bae513c1a8","head":{"label":"azaghal:ldap_refactor","ref":"ldap_refactor","sha":"4c1f01285b9a728189f70f388741f5bae513c1a8","user":{"login":"azaghal","id":809269,"avatar_url":"https://avatars2.githubusercontent.com/u/809269?v=3","gravatar_id":"","url":"https://api.github.com/users/azaghal","html_url":"https://github.com/azaghal","followers_url":"https://api.github.com/users/azaghal/followers","following_url":"https://api.github.com/users/azaghal/following{/other_user}","gists_url":"https://api.github.com/users/azaghal/gists{/gist_id}","starred_url":"https://api.github.com/users/azaghal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/azaghal/subscriptions","organizations_url":"https://api.github.com/users/azaghal/orgs","repos_url":"https://api.github.com/users/azaghal/repos","events_url":"https://api.github.com/users/azaghal/events{/privacy}","received_events_url":"https://api.github.com/users/azaghal/received_events","type":"User","site_admin":false},"repo":{"id":12871743,"name":"thebuggenie","full_name":"azaghal/thebuggenie","owner":{"login":"azaghal","id":809269,"avatar_url":"https://avatars2.githubusercontent.com/u/809269?v=3","gravatar_id":"","url":"https://api.github.com/users/azaghal","html_url":"https://github.com/azaghal","followers_url":"https://api.github.com/users/azaghal/followers","following_url":"https://api.github.com/users/azaghal/following{/other_user}","gists_url":"https://api.github.com/users/azaghal/gists{/gist_id}","starred_url":"https://api.github.com/users/azaghal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/azaghal/subscriptions","organizations_url":"https://api.github.com/users/azaghal/orgs","repos_url":"https://api.github.com/users/azaghal/repos","events_url":"https://api.github.com/users/azaghal/events{/privacy}","received_events_url":"https://api.github.com/users/azaghal/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/azaghal/thebuggenie","description":"The Bug Genie is a friendly project management and issue tracking tool","fork":true,"url":"https://api.github.com/repos/azaghal/thebuggenie","forks_url":"https://api.github.com/repos/azaghal/thebuggenie/forks","keys_url":"https://api.github.com/repos/azaghal/thebuggenie/keys{/key_id}","collaborators_url":"https://api.github.com/repos/azaghal/thebuggenie/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/azaghal/thebuggenie/teams","hooks_url":"https://api.github.com/repos/azaghal/thebuggenie/hooks","issue_events_url":"https://api.github.com/repos/azaghal/thebuggenie/issues/events{/number}","events_url":"https://api.github.com/repos/azaghal/thebuggenie/events","assignees_url":"https://api.github.com/repos/azaghal/thebuggenie/assignees{/user}","branches_url":"https://api.github.com/repos/azaghal/thebuggenie/branches{/branch}","tags_url":"https://api.github.com/repos/azaghal/thebuggenie/tags","blobs_url":"https://api.github.com/repos/azaghal/thebuggenie/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/azaghal/thebuggenie/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/azaghal/thebuggenie/git/refs{/sha}","trees_url":"https://api.github.com/repos/azaghal/thebuggenie/git/trees{/sha}","statuses_url":"https://api.github.com/repos/azaghal/thebuggenie/statuses/{sha}","languages_url":"https://api.github.com/repos/azaghal/thebuggenie/languages","stargazers_url":"https://api.github.com/repos/azaghal/thebuggenie/stargazers","contributors_url":"https://api.github.com/repos/azaghal/thebuggenie/contributors","subscribers_url":"https://api.github.com/repos/azaghal/thebuggenie/subscribers","subscription_url":"https://api.github.com/repos/azaghal/thebuggenie/subscription","commits_url":"https://api.github.com/repos/azaghal/thebuggenie/commits{/sha}","git_commits_url":"https://api.github.com/repos/azaghal/thebuggenie/git/commits{/sha}","comments_url":"https://api.github.com/repos/azaghal/thebuggenie/comments{/number}","issue_comment_url":"https://api.github.com/repos/azaghal/thebuggenie/issues/comments{/number}","contents_url":"https://api.github.com/repos/azaghal/thebuggenie/contents/{+path}","compare_url":"https://api.github.com/repos/azaghal/thebuggenie/compare/{base}...{head}","merges_url":"https://api.github.com/repos/azaghal/thebuggenie/merges","archive_url":"https://api.github.com/repos/azaghal/thebuggenie/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/azaghal/thebuggenie/downloads","issues_url":"https://api.github.com/repos/azaghal/thebuggenie/issues{/number}","pulls_url":"https://api.github.com/repos/azaghal/thebuggenie/pulls{/number}","milestones_url":"https://api.github.com/repos/azaghal/thebuggenie/milestones{/number}","notifications_url":"https://api.github.com/repos/azaghal/thebuggenie/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/azaghal/thebuggenie/labels{/name}","releases_url":"https://api.github.com/repos/azaghal/thebuggenie/releases{/id}","deployments_url":"https://api.github.com/repos/azaghal/thebuggenie/deployments","created_at":"2013-09-16T16:03:07Z","updated_at":"2015-03-22T16:04:16Z","pushed_at":"2017-05-12T13:00:33Z","git_url":"git://github.com/azaghal/thebuggenie.git","ssh_url":"git@github.com:azaghal/thebuggenie.git","clone_url":"https://github.com/azaghal/thebuggenie.git","svn_url":"https://github.com/azaghal/thebuggenie","homepage":"http://www.thebuggenie.com","size":38204,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"thebuggenie:master","ref":"master","sha":"abd55b9066e400174f96bc6529ba948bb6ea27b3","user":{"login":"thebuggenie","id":857500,"avatar_url":"https://avatars1.githubusercontent.com/u/857500?v=3","gravatar_id":"","url":"https://api.github.com/users/thebuggenie","html_url":"https://github.com/thebuggenie","followers_url":"https://api.github.com/users/thebuggenie/followers","following_url":"https://api.github.com/users/thebuggenie/following{/other_user}","gists_url":"https://api.github.com/users/thebuggenie/gists{/gist_id}","starred_url":"https://api.github.com/users/thebuggenie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thebuggenie/subscriptions","organizations_url":"https://api.github.com/users/thebuggenie/orgs","repos_url":"https://api.github.com/users/thebuggenie/repos","events_url":"https://api.github.com/users/thebuggenie/events{/privacy}","received_events_url":"https://api.github.com/users/thebuggenie/received_events","type":"Organization","site_admin":false},"repo":{"id":1914841,"name":"thebuggenie","full_name":"thebuggenie/thebuggenie","owner":{"login":"thebuggenie","id":857500,"avatar_url":"https://avatars1.githubusercontent.com/u/857500?v=3","gravatar_id":"","url":"https://api.github.com/users/thebuggenie","html_url":"https://github.com/thebuggenie","followers_url":"https://api.github.com/users/thebuggenie/followers","following_url":"https://api.github.com/users/thebuggenie/following{/other_user}","gists_url":"https://api.github.com/users/thebuggenie/gists{/gist_id}","starred_url":"https://api.github.com/users/thebuggenie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thebuggenie/subscriptions","organizations_url":"https://api.github.com/users/thebuggenie/orgs","repos_url":"https://api.github.com/users/thebuggenie/repos","events_url":"https://api.github.com/users/thebuggenie/events{/privacy}","received_events_url":"https://api.github.com/users/thebuggenie/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/thebuggenie/thebuggenie","description":"The Bug Genie is a friendly project management and issue tracking tool","fork":false,"url":"https://api.github.com/repos/thebuggenie/thebuggenie","forks_url":"https://api.github.com/repos/thebuggenie/thebuggenie/forks","keys_url":"https://api.github.com/repos/thebuggenie/thebuggenie/keys{/key_id}","collaborators_url":"https://api.github.com/repos/thebuggenie/thebuggenie/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/thebuggenie/thebuggenie/teams","hooks_url":"https://api.github.com/repos/thebuggenie/thebuggenie/hooks","issue_events_url":"https://api.github.com/repos/thebuggenie/thebuggenie/issues/events{/number}","events_url":"https://api.github.com/repos/thebuggenie/thebuggenie/events","assignees_url":"https://api.github.com/repos/thebuggenie/thebuggenie/assignees{/user}","branches_url":"https://api.github.com/repos/thebuggenie/thebuggenie/branches{/branch}","tags_url":"https://api.github.com/repos/thebuggenie/thebuggenie/tags","blobs_url":"https://api.github.com/repos/thebuggenie/thebuggenie/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/thebuggenie/thebuggenie/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/thebuggenie/thebuggenie/git/refs{/sha}","trees_url":"https://api.github.com/repos/thebuggenie/thebuggenie/git/trees{/sha}","statuses_url":"https://api.github.com/repos/thebuggenie/thebuggenie/statuses/{sha}","languages_url":"https://api.github.com/repos/thebuggenie/thebuggenie/languages","stargazers_url":"https://api.github.com/repos/thebuggenie/thebuggenie/stargazers","contributors_url":"https://api.github.com/repos/thebuggenie/thebuggenie/contributors","subscribers_url":"https://api.github.com/repos/thebuggenie/thebuggenie/subscribers","subscription_url":"https://api.github.com/repos/thebuggenie/thebuggenie/subscription","commits_url":"https://api.github.com/repos/thebuggenie/thebuggenie/commits{/sha}","git_commits_url":"https://api.github.com/repos/thebuggenie/thebuggenie/git/commits{/sha}","comments_url":"https://api.github.com/repos/thebuggenie/thebuggenie/comments{/number}","issue_comment_url":"https://api.github.com/repos/thebuggenie/thebuggenie/issues/comments{/number}","contents_url":"https://api.github.com/repos/thebuggenie/thebuggenie/contents/{+path}","compare_url":"https://api.github.com/repos/thebuggenie/thebuggenie/compare/{base}...{head}","merges_url":"https://api.github.com/repos/thebuggenie/thebuggenie/merges","archive_url":"https://api.github.com/repos/thebuggenie/thebuggenie/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/thebuggenie/thebuggenie/downloads","issues_url":"https://api.github.com/repos/thebuggenie/thebuggenie/issues{/number}","pulls_url":"https://api.github.com/repos/thebuggenie/thebuggenie/pulls{/number}","milestones_url":"https://api.github.com/repos/thebuggenie/thebuggenie/milestones{/number}","notifications_url":"https://api.github.com/repos/thebuggenie/thebuggenie/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/thebuggenie/thebuggenie/labels{/name}","releases_url":"https://api.github.com/repos/thebuggenie/thebuggenie/releases{/id}","deployments_url":"https://api.github.com/repos/thebuggenie/thebuggenie/deployments","created_at":"2011-06-18T07:16:34Z","updated_at":"2017-04-20T22:05:26Z","pushed_at":"2017-05-10T15:54:12Z","git_url":"git://github.com/thebuggenie/thebuggenie.git","ssh_url":"git@github.com:thebuggenie/thebuggenie.git","clone_url":"https://github.com/thebuggenie/thebuggenie.git","svn_url":"https://github.com/thebuggenie/thebuggenie","homepage":"http://www.thebuggenie.com","size":38103,"stargazers_count":402,"watchers_count":402,"language":"PHP","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":155,"mirror_url":null,"open_issues_count":4,"forks":155,"open_issues":4,"watchers":402,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/thebuggenie/thebuggenie/pulls/494"},"html":{"href":"https://github.com/thebuggenie/thebuggenie/pull/494"},"issue":{"href":"https://api.github.com/repos/thebuggenie/thebuggenie/issues/494"},"comments":{"href":"https://api.github.com/repos/thebuggenie/thebuggenie/issues/494/comments"},"review_comments":{"href":"https://api.github.com/repos/thebuggenie/thebuggenie/pulls/494/comments"},"review_comment":{"href":"https://api.github.com/repos/thebuggenie/thebuggenie/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/thebuggenie/thebuggenie/pulls/494/commits"},"statuses":{"href":"https://api.github.com/repos/thebuggenie/thebuggenie/statuses/4c1f01285b9a728189f70f388741f5bae513c1a8"}},"merged":false,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"maintainer_can_modify":true,"commits":4,"additions":1224,"deletions":871,"changed_files":9}}
{"actor":{"display_login":"azaghal"}}