{"id":13806054,"url":"https://github.com/Pylons/horus","last_synced_at":"2025-05-13T21:32:18.756Z","repository":{"id":16004095,"uuid":"18747445","full_name":"Pylons/horus","owner":"Pylons","description":"User registration and login system for the Pyramid Web Framework.","archived":false,"fork":false,"pushed_at":"2020-04-06T03:33:26.000Z","size":26,"stargazers_count":14,"open_issues_count":2,"forks_count":2,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-04-10T02:46:53.383Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Pylons.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.txt","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-04-14T03:41:00.000Z","updated_at":"2023-09-07T08:44:47.000Z","dependencies_parsed_at":"2022-08-30T12:20:17.106Z","dependency_job_id":null,"html_url":"https://github.com/Pylons/horus","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pylons%2Fhorus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pylons%2Fhorus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pylons%2Fhorus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pylons%2Fhorus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Pylons","download_url":"https://codeload.github.com/Pylons/horus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":213870459,"owners_count":15650178,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T01:01:07.449Z","updated_at":"2024-08-04T01:05:40.160Z","avatar_url":"https://github.com/Pylons.png","language":"Python","funding_links":[],"categories":["Authorization"],"sub_categories":[],"readme":"Getting Started\n=================================\n\n.. code-block::\n\n    $ git clone git@github.com:Pylons/horus.git\n    $ cd horus\n    $ pip install -e .\n\nIf you would like to run the tests you should run:\n\n.. code-block::\n\n   $ pip install -e .[testing]\n\n\nDesign Decisions\n=================================\n\nViews\n------------------------------------\nA view will be the utility functions needed to interface with\nPyramid.  They will be extremely light weight, they should validate and\nparse JSON/form data, then create any services and facades required and\nshould contain no business logic.\n\n\nService\n------------------------------------\nA service is a class that will represent all the business logic\nrequired to do a certain responsibility like creating authenticating a user.\n\nThe facade should not have any access to Pyramid or a persistence store. So\nthere should be no DBSession or Request available, if the facade needs\ndatabase access it should be done through a service.\n\n\nBackend\n------------------------------------\nA backend is an abstraction around the data access.  There should\nbe as little business logic in a repository as possible, it should be for\nconnecting to a data store (postgres, zodb, mongodb) and returning the result set.\n\nMapping functions from database rows to model classes should be done here.\n\nFlows\n------------------------------------\nFlows represent a type of authentication that will include a specific set of services.\n\n*local*\nThe local flow represents that standard form workflow where you present a username/password\nform that authenticates the user from a database.\n\nThe local flow includes things like registration and e-mail verification.\n\n*ldap*\nThe ldap flow will authenticate against an LDAP server, no registration or activation is required.\n\n \nExample Configuration\n=====================\n\n.. code-block:: ini\n\n    pyramid.includes = horus\n\n    horus.backend = horus.backends.sqla\n    horus.backend.sqlalchemy_url = postgresql://\n\n    horus.flows =\n      local\n      fb\n\n    local.impl = horus.flows.local\n    local.\n\n    fb.impl = horus.flows.facebook\n    fb.access_token = \n    fb.\n\n.. code-block:: python\n\n    config.override_assets(\n      to_override='horus.flows.local:templates/',\n      override_with='myapp.templates/')\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPylons%2Fhorus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPylons%2Fhorus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPylons%2Fhorus/lists"}