Browse Source

Retire project

In Queens development cycle, openstack_auth code was merged
into the horizon repository.

blueprint merge-openstack-auth

Change-Id: I74b10a90fe79fc768cfb8de6f68d3cd2f4938e51
changes/28/523928/5
Akihiro Motoki 1 year ago
parent
commit
2baea728dd
72 changed files with 8 additions and 8265 deletions
  1. 0
    14
      .gitignore
  2. 0
    4
      .gitreview
  3. 0
    5
      .mailmap
  4. 0
    17
      CONTRIBUTING.rst
  5. 0
    176
      LICENSE
  6. 0
    6
      MANIFEST.in
  7. 8
    25
      README.rst
  8. 0
    1
      babel-django.cfg
  9. 0
    170
      doc/source/conf.py
  10. 0
    442
      doc/source/configuration/index.rst
  11. 0
    21
      doc/source/index.rst
  12. 0
    63
      doc/source/install/index.rst
  13. 0
    6
      doc/source/reference/backend.rst
  14. 0
    6
      doc/source/reference/forms.rst
  15. 0
    13
      doc/source/reference/index.rst
  16. 0
    6
      doc/source/reference/user.rst
  17. 0
    6
      doc/source/reference/utils.rst
  18. 0
    6
      doc/source/reference/views.rst
  19. 0
    17
      openstack_auth/__init__.py
  20. 0
    282
      openstack_auth/backend.py
  21. 0
    17
      openstack_auth/exceptions.py
  22. 0
    155
      openstack_auth/forms.py
  23. 0
    74
      openstack_auth/locale/cs/LC_MESSAGES/django.po
  24. 0
    103
      openstack_auth/locale/de/LC_MESSAGES/django.po
  25. 0
    75
      openstack_auth/locale/en_AU/LC_MESSAGES/django.po
  26. 0
    97
      openstack_auth/locale/en_GB/LC_MESSAGES/django.po
  27. 0
    97
      openstack_auth/locale/es/LC_MESSAGES/django.po
  28. 0
    74
      openstack_auth/locale/es_MX/LC_MESSAGES/django.po
  29. 0
    105
      openstack_auth/locale/fr/LC_MESSAGES/django.po
  30. 0
    98
      openstack_auth/locale/id/LC_MESSAGES/django.po
  31. 0
    76
      openstack_auth/locale/it/LC_MESSAGES/django.po
  32. 0
    101
      openstack_auth/locale/ja/LC_MESSAGES/django.po
  33. 0
    98
      openstack_auth/locale/ko_KR/LC_MESSAGES/django.po
  34. 0
    52
      openstack_auth/locale/nl_NL/LC_MESSAGES/django.po
  35. 0
    71
      openstack_auth/locale/pa_IN/LC_MESSAGES/django.po
  36. 0
    75
      openstack_auth/locale/pl_PL/LC_MESSAGES/django.po
  37. 0
    100
      openstack_auth/locale/pt_BR/LC_MESSAGES/django.po
  38. 0
    87
      openstack_auth/locale/ru/LC_MESSAGES/django.po
  39. 0
    99
      openstack_auth/locale/tr_TR/LC_MESSAGES/django.po
  40. 0
    50
      openstack_auth/locale/uk/LC_MESSAGES/django.po
  41. 0
    99
      openstack_auth/locale/zh_CN/LC_MESSAGES/django.po
  42. 0
    90
      openstack_auth/locale/zh_TW/LC_MESSAGES/django.po
  43. 0
    18
      openstack_auth/models.py
  44. 0
    22
      openstack_auth/plugin/__init__.py
  45. 0
    241
      openstack_auth/plugin/base.py
  46. 0
    107
      openstack_auth/plugin/k2k.py
  47. 0
    51
      openstack_auth/plugin/password.py
  48. 0
    41
      openstack_auth/plugin/token.py
  49. 0
    231
      openstack_auth/policy.py
  50. 0
    0
      openstack_auth/tests/__init__.py
  51. 0
    146
      openstack_auth/tests/conf/keystone_policy.json
  52. 0
    274
      openstack_auth/tests/conf/nova_policy.json
  53. 0
    195
      openstack_auth/tests/conf/policy.v3cloudsample.json
  54. 0
    143
      openstack_auth/tests/data_v2.py
  55. 0
    361
      openstack_auth/tests/data_v3.py
  56. 0
    0
      openstack_auth/tests/models.py
  57. 0
    42
      openstack_auth/tests/run_tests.py
  58. 0
    76
      openstack_auth/tests/settings.py
  59. 0
    0
      openstack_auth/tests/templates/auth/blank.html
  60. 0
    11
      openstack_auth/tests/templates/auth/login.html
  61. 0
    1522
      openstack_auth/tests/tests.py
  62. 0
    29
      openstack_auth/tests/urls.py
  63. 0
    36
      openstack_auth/urls.py
  64. 0
    454
      openstack_auth/user.py
  65. 0
    562
      openstack_auth/utils.py
  66. 0
    327
      openstack_auth/views.py
  67. 0
    10
      requirements.txt
  68. 0
    53
      setup.cfg
  69. 0
    29
      setup.py
  70. 0
    11
      test-requirements.txt
  71. 0
    30
      tools/tox_install.sh
  72. 0
    64
      tox.ini

+ 0
- 14
.gitignore View File

@@ -1,14 +0,0 @@
1
-*.pyc
2
-*.egg
3
-*.egg-info
4
-*.mo
5
-.DS_STORE
6
-doc/build
7
-build
8
-dist
9
-.tox
10
-AUTHORS
11
-ChangeLog
12
-.coverage
13
-reports
14
-coverage.xml

+ 0
- 4
.gitreview View File

@@ -1,4 +0,0 @@
1
-[gerrit]
2
-host=review.openstack.org
3
-port=29418
4
-project=openstack/django_openstack_auth.git

+ 0
- 5
.mailmap View File

@@ -1,5 +0,0 @@
1
-<david.lyle@hp.com> <david-lyle@davidlyle-VirtualBox.(none)>
2
-<lin-hua.cheng@hp.com> <lin_hua_cheng@yahoo.com>
3
-Eric Peterson <ericpeterson@hp.com> ericpeterson-l <ericpeterson@hp.com>
4
-Eric Peterson <ericpeterson@hp.com> erpet <ericpeterson@hp.com>
5
-Lin Hua Cheng <lin-hua.cheng@hp.com> linhuacheng <lin-hua.cheng@hp.com>

+ 0
- 17
CONTRIBUTING.rst View File

@@ -1,17 +0,0 @@
1
-If you would like to contribute to the development of OpenStack,
2
-you must follow the steps documented at:
3
-
4
-   http://docs.openstack.org/infra/manual/developers.html
5
-
6
-If you already have a good understanding of how the system works and
7
-your OpenStack accounts are set up, you can skip to the development
8
-workflow section of this documentation to learn how changes to
9
-OpenStack should be submitted for review via the Gerrit tool:
10
-
11
-   http://docs.openstack.org/infra/manual/developers.html#development-workflow
12
-
13
-Pull requests submitted through GitHub will be ignored.
14
-
15
-Bugs should be filed on Launchpad, not GitHub:
16
-
17
-   https://bugs.launchpad.net/django-openstack-auth

+ 0
- 176
LICENSE View File

@@ -1,176 +0,0 @@
1
-
2
-                                 Apache License
3
-                           Version 2.0, January 2004
4
-                        http://www.apache.org/licenses/
5
-
6
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
-
8
-   1. Definitions.
9
-
10
-      "License" shall mean the terms and conditions for use, reproduction,
11
-      and distribution as defined by Sections 1 through 9 of this document.
12
-
13
-      "Licensor" shall mean the copyright owner or entity authorized by
14
-      the copyright owner that is granting the License.
15
-
16
-      "Legal Entity" shall mean the union of the acting entity and all
17
-      other entities that control, are controlled by, or are under common
18
-      control with that entity. For the purposes of this definition,
19
-      "control" means (i) the power, direct or indirect, to cause the
20
-      direction or management of such entity, whether by contract or
21
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
-      outstanding shares, or (iii) beneficial ownership of such entity.
23
-
24
-      "You" (or "Your") shall mean an individual or Legal Entity
25
-      exercising permissions granted by this License.
26
-
27
-      "Source" form shall mean the preferred form for making modifications,
28
-      including but not limited to software source code, documentation
29
-      source, and configuration files.
30
-
31
-      "Object" form shall mean any form resulting from mechanical
32
-      transformation or translation of a Source form, including but
33
-      not limited to compiled object code, generated documentation,
34
-      and conversions to other media types.
35
-
36
-      "Work" shall mean the work of authorship, whether in Source or
37
-      Object form, made available under the License, as indicated by a
38
-      copyright notice that is included in or attached to the work
39
-      (an example is provided in the Appendix below).
40
-
41
-      "Derivative Works" shall mean any work, whether in Source or Object
42
-      form, that is based on (or derived from) the Work and for which the
43
-      editorial revisions, annotations, elaborations, or other modifications
44
-      represent, as a whole, an original work of authorship. For the purposes
45
-      of this License, Derivative Works shall not include works that remain
46
-      separable from, or merely link (or bind by name) to the interfaces of,
47
-      the Work and Derivative Works thereof.
48
-
49
-      "Contribution" shall mean any work of authorship, including
50
-      the original version of the Work and any modifications or additions
51
-      to that Work or Derivative Works thereof, that is intentionally
52
-      submitted to Licensor for inclusion in the Work by the copyright owner
53
-      or by an individual or Legal Entity authorized to submit on behalf of
54
-      the copyright owner. For the purposes of this definition, "submitted"
55
-      means any form of electronic, verbal, or written communication sent
56
-      to the Licensor or its representatives, including but not limited to
57
-      communication on electronic mailing lists, source code control systems,
58
-      and issue tracking systems that are managed by, or on behalf of, the
59
-      Licensor for the purpose of discussing and improving the Work, but
60
-      excluding communication that is conspicuously marked or otherwise
61
-      designated in writing by the copyright owner as "Not a Contribution."
62
-
63
-      "Contributor" shall mean Licensor and any individual or Legal Entity
64
-      on behalf of whom a Contribution has been received by Licensor and
65
-      subsequently incorporated within the Work.
66
-
67
-   2. Grant of Copyright License. Subject to the terms and conditions of
68
-      this License, each Contributor hereby grants to You a perpetual,
69
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
-      copyright license to reproduce, prepare Derivative Works of,
71
-      publicly display, publicly perform, sublicense, and distribute the
72
-      Work and such Derivative Works in Source or Object form.
73
-
74
-   3. Grant of Patent License. Subject to the terms and conditions of
75
-      this License, each Contributor hereby grants to You a perpetual,
76
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
-      (except as stated in this section) patent license to make, have made,
78
-      use, offer to sell, sell, import, and otherwise transfer the Work,
79
-      where such license applies only to those patent claims licensable
80
-      by such Contributor that are necessarily infringed by their
81
-      Contribution(s) alone or by combination of their Contribution(s)
82
-      with the Work to which such Contribution(s) was submitted. If You
83
-      institute patent litigation against any entity (including a
84
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
85
-      or a Contribution incorporated within the Work constitutes direct
86
-      or contributory patent infringement, then any patent licenses
87
-      granted to You under this License for that Work shall terminate
88
-      as of the date such litigation is filed.
89
-
90
-   4. Redistribution. You may reproduce and distribute copies of the
91
-      Work or Derivative Works thereof in any medium, with or without
92
-      modifications, and in Source or Object form, provided that You
93
-      meet the following conditions:
94
-
95
-      (a) You must give any other recipients of the Work or
96
-          Derivative Works a copy of this License; and
97
-
98
-      (b) You must cause any modified files to carry prominent notices
99
-          stating that You changed the files; and
100
-
101
-      (c) You must retain, in the Source form of any Derivative Works
102
-          that You distribute, all copyright, patent, trademark, and
103
-          attribution notices from the Source form of the Work,
104
-          excluding those notices that do not pertain to any part of
105
-          the Derivative Works; and
106
-
107
-      (d) If the Work includes a "NOTICE" text file as part of its
108
-          distribution, then any Derivative Works that You distribute must
109
-          include a readable copy of the attribution notices contained
110
-          within such NOTICE file, excluding those notices that do not
111
-          pertain to any part of the Derivative Works, in at least one
112
-          of the following places: within a NOTICE text file distributed
113
-          as part of the Derivative Works; within the Source form or
114
-          documentation, if provided along with the Derivative Works; or,
115
-          within a display generated by the Derivative Works, if and
116
-          wherever such third-party notices normally appear. The contents
117
-          of the NOTICE file are for informational purposes only and
118
-          do not modify the License. You may add Your own attribution
119
-          notices within Derivative Works that You distribute, alongside
120
-          or as an addendum to the NOTICE text from the Work, provided
121
-          that such additional attribution notices cannot be construed
122
-          as modifying the License.
123
-
124
-      You may add Your own copyright statement to Your modifications and
125
-      may provide additional or different license terms and conditions
126
-      for use, reproduction, or distribution of Your modifications, or
127
-      for any such Derivative Works as a whole, provided Your use,
128
-      reproduction, and distribution of the Work otherwise complies with
129
-      the conditions stated in this License.
130
-
131
-   5. Submission of Contributions. Unless You explicitly state otherwise,
132
-      any Contribution intentionally submitted for inclusion in the Work
133
-      by You to the Licensor shall be under the terms and conditions of
134
-      this License, without any additional terms or conditions.
135
-      Notwithstanding the above, nothing herein shall supersede or modify
136
-      the terms of any separate license agreement you may have executed
137
-      with Licensor regarding such Contributions.
138
-
139
-   6. Trademarks. This License does not grant permission to use the trade
140
-      names, trademarks, service marks, or product names of the Licensor,
141
-      except as required for reasonable and customary use in describing the
142
-      origin of the Work and reproducing the content of the NOTICE file.
143
-
144
-   7. Disclaimer of Warranty. Unless required by applicable law or
145
-      agreed to in writing, Licensor provides the Work (and each
146
-      Contributor provides its Contributions) on an "AS IS" BASIS,
147
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
-      implied, including, without limitation, any warranties or conditions
149
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
-      PARTICULAR PURPOSE. You are solely responsible for determining the
151
-      appropriateness of using or redistributing the Work and assume any
152
-      risks associated with Your exercise of permissions under this License.
153
-
154
-   8. Limitation of Liability. In no event and under no legal theory,
155
-      whether in tort (including negligence), contract, or otherwise,
156
-      unless required by applicable law (such as deliberate and grossly
157
-      negligent acts) or agreed to in writing, shall any Contributor be
158
-      liable to You for damages, including any direct, indirect, special,
159
-      incidental, or consequential damages of any character arising as a
160
-      result of this License or out of the use or inability to use the
161
-      Work (including but not limited to damages for loss of goodwill,
162
-      work stoppage, computer failure or malfunction, or any and all
163
-      other commercial damages or losses), even if such Contributor
164
-      has been advised of the possibility of such damages.
165
-
166
-   9. Accepting Warranty or Additional Liability. While redistributing
167
-      the Work or Derivative Works thereof, You may choose to offer,
168
-      and charge a fee for, acceptance of support, warranty, indemnity,
169
-      or other liability obligations and/or rights consistent with this
170
-      License. However, in accepting such obligations, You may act only
171
-      on Your own behalf and on Your sole responsibility, not on behalf
172
-      of any other Contributor, and only if You agree to indemnify,
173
-      defend, and hold each Contributor harmless for any liability
174
-      incurred by, or claims asserted against, such Contributor by reason
175
-      of your accepting any such warranty or additional liability.
176
-

+ 0
- 6
MANIFEST.in View File

@@ -1,6 +0,0 @@
1
-include AUTHORS
2
-include ChangeLog
3
-exclude .gitignore
4
-exclude .gitreview
5
-
6
-global-exclude *.pyc

+ 8
- 25
README.rst View File

@@ -1,27 +1,10 @@
1
-========================
2
-Team and repository tags
3
-========================
1
+The code has been merged into openstack/horizon.
4 2
 
5
-.. image:: http://governance.openstack.org/badges/django_openstack_auth.svg
6
-    :target: http://governance.openstack.org/reference/tags/index.html
3
+The contents of this repository are still available in the Git
4
+source code management system. To see the contents of this
5
+repository before it was merged into the horizon repo,
6
+please check out the previous commit with "git checkout HEAD^1".
7 7
 
8
-.. Change things from this point on
9
-
10
-=====================
11
-Django OpenStack Auth
12
-=====================
13
-
14
-Django OpenStack Auth is a pluggable Django authentication backend that
15
-works with Django's ``contrib.auth`` framework to authenticate a user against
16
-OpenStack's Keystone Identity API.
17
-
18
-The current version is designed to work with the Keystone v2.0 and v3 API.
19
-
20
-You can `view the installation instructions`_ on Read The Docs.
21
-
22
-.. _view the installation instructions: http://docs.openstack.org/developer/django_openstack_auth/
23
-
24
-* License: Apache License, Version 2.0
25
-* Documentation: http://django-openstack-auth.readthedocs.org/en/latest/
26
-* Source: http://git.openstack.org/cgit/openstack/django_openstack_auth/
27
-* Bugs: https://bugs.launchpad.net/django-openstack-auth
8
+For any further questions, please email
9
+openstack-dev@lists.openstack.org or
10
+join #openstack-horizon on Freenode.

+ 0
- 1
babel-django.cfg View File

@@ -1 +0,0 @@
1
-[python: **.py]

+ 0
- 170
doc/source/conf.py View File

@@ -1,170 +0,0 @@
1
-# -*- coding: utf-8 -*-
2
-#
3
-# Django OpenStack Auth documentation build configuration file, created by
4
-# sphinx-quickstart on Sun Jul  8 15:13:36 2012.
5
-#
6
-# This file is execfile()d with the current directory set to its containing dir.
7
-#
8
-# Note that not all possible configuration values are present in this
9
-# autogenerated file.
10
-#
11
-# All configuration values have a default; values that are commented out
12
-# serve to show the default.
13
-
14
-import os
15
-
16
-import django
17
-
18
-os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'openstack_auth.tests.settings')
19
-
20
-django.setup()
21
-
22
-# If extensions (or modules to document with autodoc) are in another directory,
23
-# add these directories to sys.path here. If the directory is relative to the
24
-# documentation root, use os.path.abspath to make it absolute, like shown here.
25
-#sys.path.insert(0, os.path.abspath('.'))
26
-
27
-# -- General configuration -----------------------------------------------------
28
-
29
-# If your documentation needs a minimal Sphinx version, state it here.
30
-#needs_sphinx = '1.0'
31
-
32
-# Add any Sphinx extension module names here, as strings. They can be extensions
33
-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
34
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode', 'openstackdocstheme']
35
-
36
-# openstackdocstheme options
37
-repository_name = 'openstack/django_openstack_auth'
38
-bug_project = 'django-openstack-auth'
39
-bug_tag = ''
40
-html_last_updated_fmt = '%Y-%m-%d %H:%M'
41
-
42
-# Add any paths that contain templates here, relative to this directory.
43
-templates_path = ['_templates']
44
-
45
-# The suffix of source filenames.
46
-source_suffix = '.rst'
47
-
48
-# The encoding of source files.
49
-#source_encoding = 'utf-8-sig'
50
-
51
-# The master toctree document.
52
-master_doc = 'index'
53
-
54
-# General information about the project.
55
-project = u'Django OpenStack Auth'
56
-copyright = u'2012, Gabriel Hurley'
57
-
58
-# The language for content autogenerated by Sphinx. Refer to documentation
59
-# for a list of supported languages.
60
-#language = None
61
-
62
-# There are two options for replacing |today|: either, you set today to some
63
-# non-false value, then it is used:
64
-#today = ''
65
-# Else, today_fmt is used as the format for a strftime call.
66
-#today_fmt = '%B %d, %Y'
67
-
68
-# List of patterns, relative to source directory, that match files and
69
-# directories to ignore when looking for source files.
70
-exclude_patterns = ['_build']
71
-
72
-# The reST default role (used for this markup: `text`) to use for all documents.
73
-#default_role = None
74
-
75
-# If true, '()' will be appended to :func: etc. cross-reference text.
76
-#add_function_parentheses = True
77
-
78
-# If true, the current module name will be prepended to all description
79
-# unit titles (such as .. function::).
80
-#add_module_names = True
81
-
82
-# If true, sectionauthor and moduleauthor directives will be shown in the
83
-# output. They are ignored by default.
84
-#show_authors = False
85
-
86
-# The name of the Pygments (syntax highlighting) style to use.
87
-pygments_style = 'sphinx'
88
-
89
-# A list of ignored prefixes for module index sorting.
90
-modindex_common_prefix = ['openstack_auth.']
91
-
92
-
93
-# -- Options for HTML output ---------------------------------------------------
94
-
95
-# The theme to use for HTML and HTML Help pages.  See the documentation for
96
-# a list of builtin themes.
97
-html_theme = 'openstackdocs'
98
-
99
-# Theme options are theme-specific and customize the look and feel of a theme
100
-# further.  For a list of options available for each theme, see the
101
-# documentation.
102
-#html_theme_options = {}
103
-
104
-# Add any paths that contain custom themes here, relative to this directory.
105
-#html_theme_path = []
106
-
107
-# The name for this set of Sphinx documents.  If None, it defaults to
108
-# "<project> v<release> documentation".
109
-#html_title = None
110
-
111
-# A shorter title for the navigation bar.  Default is the same as html_title.
112
-#html_short_title = None
113
-
114
-# The name of an image file (relative to this directory) to place at the top
115
-# of the sidebar.
116
-#html_logo = None
117
-
118
-# The name of an image file (within the static path) to use as favicon of the
119
-# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
120
-# pixels large.
121
-#html_favicon = None
122
-
123
-# Add any paths that contain custom static files (such as style sheets) here,
124
-# relative to this directory. They are copied after the builtin static files,
125
-# so a file named "default.css" will overwrite the builtin "default.css".
126
-#html_static_path = []
127
-
128
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
129
-# using the given strftime format.
130
-#html_last_updated_fmt = '%b %d, %Y'
131
-
132
-# If true, SmartyPants will be used to convert quotes and dashes to
133
-# typographically correct entities.
134
-#html_use_smartypants = True
135
-
136
-# Custom sidebar templates, maps document names to template names.
137
-#html_sidebars = {}
138
-
139
-# Additional templates that should be rendered to pages, maps page names to
140
-# template names.
141
-#html_additional_pages = {}
142
-
143
-# If false, no module index is generated.
144
-#html_domain_indices = True
145
-
146
-# If false, no index is generated.
147
-#html_use_index = True
148
-
149
-# If true, the index is split into individual pages for each letter.
150
-#html_split_index = False
151
-
152
-# If true, links to the reST sources are added to the pages.
153
-#html_show_sourcelink = True
154
-
155
-# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
156
-#html_show_sphinx = True
157
-
158
-# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
159
-#html_show_copyright = True
160
-
161
-# If true, an OpenSearch description file will be output, and all pages will
162
-# contain a <link> tag referring to it.  The value of this option must be the
163
-# base URL from which the finished HTML is served.
164
-#html_use_opensearch = ''
165
-
166
-# This is the file name suffix for HTML files (e.g. ".xhtml").
167
-#html_file_suffix = None
168
-
169
-# Output file base name for HTML help builder.
170
-htmlhelp_basename = 'DjangoOpenStackAuthdoc'

+ 0
- 442
doc/source/configuration/index.rst View File

@@ -1,442 +0,0 @@
1
-=============
2
-Configuration
3
-=============
4
-
5
-Django OpenStack Auth is configured through Django ``settings.py`` file.
6
-In most cases it is used combined with the OpenStack Dashboard,
7
-so the settings file will be ``local/local_settings.py`` file
8
-in your OpenStack Dashboard deployment.
9
-
10
-This page covers the configuration options referred by Django OpenStack Auth.
11
-
12
-:ref:`Some settings <settings-shared-with-horizon>` are also referred to
13
-by Horizon. Configure them carefully.
14
-
15
-General settings
16
-================
17
-
18
-``AUTHENTICATION_PLUGINS``
19
---------------------------
20
-
21
-Default: ``['openstack_auth.plugin.password.PasswordPlugin', 'openstack_auth.plugin.token.TokenPlugin']``
22
-
23
-A list of authentication plugins to be used.
24
-In most cases, there is no need to configure this.
25
-
26
-``AVAILABLE_REGIONS``
27
----------------------
28
-
29
-Default: ``None``
30
-
31
-A list of tuples which define multiple regions. The tuple format is
32
-``('http://{{ keystone_host }}:5000/v2.0', '{{ region_name }}')``. If any regions
33
-are specified the login form will have a dropdown selector for authenticating
34
-to the appropriate region, and there will be a region switcher dropdown in
35
-the site header when logged in.
36
-
37
-You should also define ``OPENSTACK_KEYSTONE_URL`` to indicate which of
38
-the regions is the default one.
39
-
40
-
41
-``DEFAULT_SERVICE_REGIONS``
42
----------------------------
43
-
44
-Default: ``{}``
45
-
46
-The default service region is set on a per-endpoint basis, meaning that once
47
-the user logs into some Keystone endpoint, if a default service region is
48
-defined for it in this setting and exists within Keystone catalog, it will be
49
-set as the initial service region in this endpoint. By default it is an empty
50
-dictionary because upstream can neither predict service region names in a
51
-specific deployment, nor tell whether this behavior is desired. The key of the
52
-dictionary is a full url of a Keystone endpoint with version suffix, the value
53
-is a region name.
54
-
55
-Example::
56
-
57
-    DEFAULT_SERVICE_REGIONS = {
58
-        OPENSTACK_KEYSTONE_URL: 'RegionOne'
59
-    }
60
-
61
-
62
-``OPENSTACK_API_VERSIONS``
63
---------------------------
64
-
65
-Default::
66
-
67
-    {
68
-        "identity": 2.0,
69
-        ...,
70
-    }
71
-
72
-Overrides for OpenStack API versions. Use this setting to force the
73
-OpenStack dashboard to use a specific API version for a given service API.
74
-Django OpenStack Auth refers to only the ``"identity"`` entry.
75
-The current valid values are "2.0" or "3".
76
-
77
-.. note::
78
-
79
-   See `Horizon settings
80
-   <https://docs.openstack.org/developer/horizon/install/settings.html#openstack-api-versions>`__
81
-   for the full description of this setting.
82
-
83
-``OPENSTACK_ENDPOINT_TYPE``
84
----------------------------
85
-
86
-Default: ``"publicURL"``
87
-
88
-A string which specifies the endpoint type to use for the endpoints in the
89
-Keystone service catalog. The default value for all services except for
90
-identity is ``"publicURL"``. The default value for the identity service is
91
-``"internalURL"``.
92
-
93
-``OPENSTACK_KEYSTONE_ADMIN_ROLES``
94
-----------------------------------
95
-
96
-Default: ``["admin"]``
97
-
98
-The list of roles that have administrator privileges in this OpenStack
99
-installation. This check is very basic and essentially only works with
100
-keystone v2.0 and v3 with the default policy file. The setting assumes there
101
-is a common ``admin`` like role(s) across services. Example uses of this
102
-setting are:
103
-
104
-* to rename the ``admin`` role to ``cloud-admin``
105
-* allowing multiple roles to have administrative privileges, like
106
-  ``["admin", "cloud-admin", "net-op"]``
107
-
108
-``OPENSTACK_KEYSTONE_DEFAULT_DOMAIN``
109
--------------------------------------
110
-
111
-Default: ``"Default"``
112
-
113
-Overrides the default domain used when running on single-domain model
114
-with Keystone V3. All entities will be created in the default domain.
115
-
116
-.. note::
117
-
118
-   This value must be the name of the default domain, NOT the ID.
119
-   Also, you will most likely have a value in the keystone policy file like
120
-   ``"cloud_admin": "rule:admin_required and domain_id:<your domain id>"``.
121
-   This value must be the name of the domain whose ID is specified there.
122
-
123
-``OPENSTACK_KEYSTONE_DOMAIN_CHOICES``
124
--------------------------------------
125
-
126
-.. versionadded:: 12.0.0(Pike)
127
-
128
-Default::
129
-
130
-        (
131
-          ('Default', 'Default'),
132
-        )
133
-
134
-If OPENSTACK_KEYSTONE_DOMAIN_DROPDOWN is enabled, this option can be used to
135
-set the available domains to choose from. This is a list of pairs whose first
136
-value is the domain name and the second is the display name.
137
-
138
-``OPENSTACK_KEYSTONE_DOMAIN_DROPDOWN``
139
---------------------------------------
140
-
141
-.. versionadded:: 12.0.0(Pike)
142
-
143
-Default: ``False``
144
-Set this to True if you want available domains displayed as a dropdown menu on
145
-the login screen. It is strongly advised NOT to enable this for public clouds,
146
-as advertising enabled domains to unauthenticated customers irresponsibly
147
-exposes private information. This should only be used for private clouds where
148
-the dashboard sits behind a corporate firewall.
149
-
150
-``OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT``
151
-------------------------------------------
152
-
153
-Default: ``False``
154
-
155
-Set this to True if running on multi-domain model. When this is enabled, it
156
-will require user to enter the Domain name in addition to username for login.
157
-
158
-``OPENSTACK_KEYSTONE_URL``
159
---------------------------
160
-
161
-Default: ``"http://%s:5000/v2.0" % OPENSTACK_HOST``
162
-
163
-The full URL for the Keystone endpoint used for authentication. Unless you
164
-are using HTTPS, running your Keystone server on a nonstandard port, or using
165
-a nonstandard URL scheme you shouldn't need to touch this setting.
166
-
167
-``OPENSTACK_SSL_CACERT``
168
-------------------------
169
-
170
-Default: ``None``
171
-
172
-When unset or set to ``None`` the default CA certificate on the system is used
173
-for SSL verification.
174
-
175
-When set with the path to a custom CA certificate file, this overrides use of
176
-the default system CA certificate. This custom certificate is used to verify all
177
-connections to openstack services when making API calls.
178
-
179
-``OPENSTACK_SSL_NO_VERIFY``
180
----------------------------
181
-
182
-Default: ``False``
183
-
184
-Disable SSL certificate checks in the OpenStack clients (useful for self-signed
185
-certificates).
186
-
187
-``OPENSTACK_TOKEN_HASH_ALGORITHM``
188
-----------------------------------
189
-
190
-Default: ``"md5"``
191
-
192
-The hash algorithm to use for authentication tokens. This must match the hash
193
-algorithm that the identity (Keystone) server and the auth_token middleware
194
-are using. Allowed values are the algorithms supported by Python's hashlib
195
-library.
196
-
197
-``OPENSTACK_TOKEN_HASH_ENABLED``
198
---------------------------------
199
-
200
-(Deprecated)
201
-
202
-Default: ``True``
203
-
204
-Hashing tokens from Keystone keeps the Horizon session data smaller, but it
205
-doesn't work in some cases when using PKI tokens.  Uncomment this value and
206
-set it to False if using PKI tokens and there are 401 errors due to token
207
-hashing.
208
-
209
-This option is now marked as "deprecated" and will be removed in Ocata or a
210
-later release. PKI tokens currently work with hashing, and Keystone will soon
211
-deprecate usage of PKI tokens.
212
-
213
-``PASSWORD_EXPIRES_WARNING_THRESHOLD_DAYS``
214
--------------------------------------------
215
-
216
-Default: ``-1``
217
-
218
-Password will have an expiration date when using keystone v3 and enabling the
219
-feature. This setting allows you to set the number of days that the user will
220
-be alerted prior to the password expiration. Once the password expires keystone
221
-will deny the access and users must contact an admin to change their password.
222
-Setting this value to ``N`` days means the user will be alerted when the
223
-password expires in less than ``N+1`` days. ``-1`` disables the feature.
224
-
225
-``POLICY_DIRS``
226
-----------------
227
-
228
-Default: ``{}``
229
-
230
-Specifies a list of policy directories per service types. The directories
231
-are relative to ``POLICY_FILES_PATH``. Services whose additional policies
232
-are defined here must be defined in ``POLICY_FILES`` too. Otherwise,
233
-additional policies specified in ``POLICY_DIRS`` are not loaded.
234
-
235
-Example::
236
-
237
-    POLICY_DIRS = {
238
-        'identity': 'keystone_policy.d',
239
-        'compute': 'nova_policy.d'
240
-    }
241
-
242
-``POLICY_FILES``
243
-----------------
244
-
245
-Default: ``{'identity': 'keystone_policy.json', 'compute': 'nova_policy.json'}``
246
-
247
-This should essentially be the mapping of the contents of ``POLICY_FILES_PATH``
248
-to service types.  When policy.json files are added to ``POLICY_FILES_PATH``,
249
-they should be included here too.
250
-
251
-``POLICY_FILES_PATH``
252
----------------------
253
-
254
-Default:  ``os.path.join(ROOT_PATH, "conf")``
255
-
256
-Specifies where service based policy files are located. These are used to
257
-define the policy rules actions are verified against.
258
-
259
-``SECURE_PROXY_ADDR_HEADER``
260
-----------------------------
261
-
262
-Default: ``False``
263
-
264
-If horizon is behind a proxy server and the proxy is configured, the IP address
265
-from request is passed using header variables inside the request. The header
266
-name depends on a proxy or a load-balancer. This setting specifies the name of
267
-the header with remote IP address. The main use is for authentication log
268
-(success or fail) displaing the IP address of the user.
269
-The commom value for this setting is ``HTTP_X_REAL_IP`` or
270
-``HTTP_X_FORWARDED_FOR``.
271
-If not present, then ``REMOTE_ADDR`` header is used. (``REMOTE_ADDR`` is the
272
-field of Django HttpRequest object which contains IP address of the client.)
273
-
274
-``SESSION_TIMEOUT``
275
--------------------
276
-
277
-Default: ``"3600"``
278
-
279
-This ``SESSION_TIMEOUT`` is a method to supercede the token timeout with a
280
-shorter horizon session timeout (in seconds).  So if your token expires in
281
-60 minutes, a value of 1800 will log users out after 30 minutes.
282
-
283
-``TOKEN_DELETION_DISABLED``
284
----------------------------
285
-
286
-Default: ``False``
287
-
288
-This setting allows deployers to control whether a token is deleted on log out.
289
-This can be helpful when there are often long running processes being run
290
-in the Horizon environment.
291
-
292
-``TOKEN_TIMEOUT_MARGIN``
293
-------------------------
294
-
295
-Default: ``0``
296
-
297
-A time margin in seconds to subtract from the real token's validity.
298
-An example usage is that the token can be valid once the middleware
299
-passed, and invalid (timed-out) during a view rendering and this
300
-generates authorization errors during the view rendering.
301
-By setting this value to some smaller seconds, you can avoid token
302
-expiration during a view rendering.
303
-
304
-``WEBROOT``
305
------------
306
-
307
-Default: ``"/"``
308
-
309
-Specifies the location where the access to the dashboard is configured in
310
-the web server.
311
-
312
-For example, if you're accessing the Dashboard via
313
-https://<your server>/dashboard, you would set this to ``"/dashboard/"``.
314
-
315
-.. note::
316
-
317
-    Additional settings may be required in the config files of your webserver
318
-    of choice. For example to make ``"/dashboard/"`` the web root in Apache,
319
-    the ``"sites-available/horizon.conf"`` requires a couple of additional
320
-    aliases set::
321
-
322
-        Alias /dashboard/static %HORIZON_DIR%/static
323
-
324
-        Alias /dashboard/media %HORIZON_DIR%/openstack_dashboard/static
325
-
326
-    Apache also requires changing your WSGIScriptAlias to reflect the desired
327
-    path.  For example, you'd replace ``/`` with ``/dashboard`` for the
328
-    alias.
329
-
330
-Web SSO (Single Sign On) settings
331
-=================================
332
-
333
-``WEBSSO_ENABLED``
334
-------------------
335
-
336
-Default: ``False``
337
-
338
-Enables keystone web single-sign-on if set to True. For this feature to work,
339
-make sure that you are using Keystone V3 and Django OpenStack Auth V1.2.0 or
340
-later.
341
-
342
-``WEBSSO_INITIAL_CHOICE``
343
--------------------------
344
-
345
-Default: ``"credentials"``
346
-
347
-Determines the default authentication mechanism. When user lands on the login
348
-page, this is the first choice they will see.
349
-
350
-``WEBSSO_CHOICES``
351
-------------------
352
-
353
-Default::
354
-
355
-        (
356
-          ("credentials", _("Keystone Credentials")),
357
-          ("oidc", _("OpenID Connect")),
358
-          ("saml2", _("Security Assertion Markup Language"))
359
-        )
360
-
361
-This is the list of authentication mechanisms available to the user. It
362
-includes Keystone federation protocols such as OpenID Connect and SAML, and
363
-also keys that map to specific identity provider and federation protocol
364
-combinations (as defined in ``WEBSSO_IDP_MAPPING``). The list of choices is
365
-completely configurable, so as long as the id remains intact. Do not remove
366
-the credentials mechanism unless you are sure. Once removed, even admins will
367
-have no way to log into the system via the dashboard.
368
-
369
-``WEBSSO_IDP_MAPPING``
370
-----------------------
371
-
372
-Default: ``{}``
373
-
374
-A dictionary of specific identity provider and federation protocol combinations.
375
-From the selected authentication mechanism, the value will be looked up as keys
376
-in the dictionary. If a match is found, it will redirect the user to a identity
377
-provider and federation protocol specific WebSSO endpoint in keystone, otherwise
378
-it will use the value as the protocol_id when redirecting to the WebSSO by
379
-protocol endpoint.
380
-
381
-Example::
382
-
383
-        WEBSSO_CHOICES =  (
384
-            ("credentials", _("Keystone Credentials")),
385
-            ("oidc", _("OpenID Connect")),
386
-            ("saml2", _("Security Assertion Markup Language")),
387
-            ("acme_oidc", "ACME - OpenID Connect"),
388
-            ("acme_saml2", "ACME - SAML2")
389
-        )
390
-
391
-        WEBSSO_IDP_MAPPING = {
392
-            "acme_oidc": ("acme", "oidc"),
393
-            "acme_saml2": ("acme", "saml2")
394
-        }
395
-
396
-.. note::
397
-  The value is expected to be a tuple formatted as: (<idp_id>, <protocol_id>).
398
-
399
-K2K (Keystone to Keystone) Federation settings
400
-==============================================
401
-
402
-``KEYSTONE_PROVIDER_IDP_NAME``
403
-------------------------------
404
-
405
-Default: ``Local Keystone``
406
-
407
-The Keystone Provider drop down uses Keystone to Keystone federation
408
-to switch between Keystone service providers.
409
-This sets display name for Identity Provider (dropdown display name).
410
-
411
-``KEYSTONE_PROVIDER_IDP_ID``
412
-----------------------------
413
-
414
-Default:: ``localkeystone``
415
-
416
-This ID is used for only for comparison with the service provider IDs.
417
-This ID should not match any service provider IDs.
418
-
419
-.. _settings-shared-with-horizon:
420
-
421
-Settings shared with Horizon
422
-============================
423
-
424
-The following settings in Django OpenStack Auth are also used by Horizon.
425
-
426
-* ``AVAILABLE_REGIONS``
427
-* ``OPENSTACK_API_VERSIONS``
428
-* ``OPENSTACK_KEYSTONE_URL``
429
-* ``OPENSTACK_ENDPOINT_TYPE``
430
-* ``OPENSTACK_SSL_CACERT``
431
-* ``OPENSTACK_SSL_NO_VERIFY``
432
-* ``WEBROOT``
433
-
434
-Django OpenStack Auth also refers to the following Django settings.
435
-For more detail, see `Django settings documentation
436
-<https://docs.djangoproject.com/en/1.11/ref/settings/#auth>`__.
437
-They are usually configured as part of Horizon settings.
438
-
439
-* ``LOGIN_REDIRECT_URL``
440
-* ``LOGIN_URL``
441
-* ``SESSION_ENGINE``
442
-* ``USE_TZ``

+ 0
- 21
doc/source/index.rst View File

@@ -1,21 +0,0 @@
1
-=====================
2
-Django OpenStack Auth
3
-=====================
4
-
5
-Django OpenStack Auth is a pluggable Django authentication backend that
6
-works with Django's ``contrib.auth`` framework to authenticate a user against
7
-OpenStack's Keystone Identity API.
8
-
9
-The current version is designed to work with the Keystone V2 or V3 API.
10
-
11
-.. toctree::
12
-   :maxdepth: 2
13
-
14
-   install/index
15
-   configuration/index
16
-   reference/index
17
-
18
-* :ref:`genindex`
19
-* :ref:`modindex`
20
-* :ref:`search`
21
-

+ 0
- 63
doc/source/install/index.rst View File

@@ -1,63 +0,0 @@
1
-===============
2
-Getting Started
3
-===============
4
-
5
-Installation
6
-============
7
-
8
-Installing is quick and easy:
9
-
10
-#. Run ``pip install django_openstack_auth``.
11
-
12
-#. Add ``openstack_auth`` to ``settings.INSTALLED_APPS``.
13
-
14
-#. Add ``'openstack_auth.backend.KeystoneBackend'`` to your
15
-   ``settings.AUTHENTICATION_BACKENDS``, e.g.::
16
-
17
-        AUTHENTICATION_BACKENDS = ('openstack_auth.backend.KeystoneBackend',)
18
-
19
-#. Configure your API endpoint(s) in ``settings.py``::
20
-
21
-        OPENSTACK_KEYSTONE_URL = "http://example.com:5000/v3"
22
-
23
-#. Include ``'openstack_auth.urls'`` somewhere in your ``urls.py`` file.
24
-
25
-#. Use it as you would any other Django auth backend.
26
-
27
-Running Tests
28
-=============
29
-
30
-Before running tests, you should have ``tox`` installed and available in your
31
-environment:
32
-
33
-.. code-block:: bash
34
-
35
-    $ pip install tox
36
-
37
-.. NOTE::
38
-
39
-    You may need to perform both the above operation and the next inside a
40
-    python virtualenv, or prefix the above command with ``sudo``, depending on
41
-    your preference.
42
-
43
-To execute the full suite of tests maintained within the project, simply run:
44
-
45
-.. code-block:: bash
46
-
47
-    $ tox
48
-
49
-.. NOTE::
50
-
51
-    The first time you run ``tox``, it will take additional time to build
52
-    virtualenvs. You can later use the ``-r`` option with ``tox`` to rebuild
53
-    your virtualenv in a similar manner.
54
-
55
-To run tests for one or more specific test environments (for example, the most
56
-common configuration of Python 2.7 and PEP-8), list the environments with the
57
-``-e`` option, separated by spaces:
58
-
59
-.. code-block:: bash
60
-
61
-    $ tox -e py27,pep8
62
-
63
-See ``tox.ini`` for the full list of available test environments.

+ 0
- 6
doc/source/reference/backend.rst View File

@@ -1,6 +0,0 @@
1
-==================
2
-The Backend Module
3
-==================
4
-
5
-.. automodule:: openstack_auth.backend
6
-   :members:

+ 0
- 6
doc/source/reference/forms.rst View File

@@ -1,6 +0,0 @@
1
-================
2
-The Forms Module
3
-================
4
-
5
-.. automodule:: openstack_auth.forms
6
-   :members:

+ 0
- 13
doc/source/reference/index.rst View File

@@ -1,13 +0,0 @@
1
-=====================================
2
- Django OpenStack Auth API Reference
3
-=====================================
4
-
5
-.. toctree::
6
-   :maxdepth: 2
7
-
8
-   user
9
-   views
10
-   forms
11
-   backend
12
-   utils
13
-

+ 0
- 6
doc/source/reference/user.rst View File

@@ -1,6 +0,0 @@
1
-==============
2
-The User Class
3
-==============
4
-
5
-.. automodule:: openstack_auth.user
6
-   :members:

+ 0
- 6
doc/source/reference/utils.rst View File

@@ -1,6 +0,0 @@
1
-================
2
-The Utils Module
3
-================
4
-
5
-.. automodule:: openstack_auth.utils
6
-   :members:

+ 0
- 6
doc/source/reference/views.rst View File

@@ -1,6 +0,0 @@
1
-================
2
-The Views Module
3
-================
4
-
5
-.. automodule:: openstack_auth.views
6
-   :members:

+ 0
- 17
openstack_auth/__init__.py View File

@@ -1,17 +0,0 @@
1
-# Licensed under the Apache License, Version 2.0 (the "License");
2
-# you may not use this file except in compliance with the License.
3
-# You may obtain a copy of the License at
4
-#
5
-#    http://www.apache.org/licenses/LICENSE-2.0
6
-#
7
-# Unless required by applicable law or agreed to in writing, software
8
-# distributed under the License is distributed on an "AS IS" BASIS,
9
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
10
-# implied.
11
-# See the License for the specific language governing permissions and
12
-# limitations under the License.
13
-
14
-import pbr.version
15
-
16
-
17
-__version__ = pbr.version.VersionInfo('django_openstack_auth').version_string()

+ 0
- 282
openstack_auth/backend.py View File

@@ -1,282 +0,0 @@
1
-# Licensed under the Apache License, Version 2.0 (the "License");
2
-# you may not use this file except in compliance with the License.
3
-# You may obtain a copy of the License at
4
-#
5
-#    http://www.apache.org/licenses/LICENSE-2.0
6
-#
7
-# Unless required by applicable law or agreed to in writing, software
8
-# distributed under the License is distributed on an "AS IS" BASIS,
9
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
10
-# implied.
11
-# See the License for the specific language governing permissions and
12
-# limitations under the License.
13
-
14
-""" Module defining the Django auth backend class for the Keystone API. """
15
-
16
-import datetime
17
-import logging
18
-import pytz
19
-
20
-from django.conf import settings
21
-from django.utils.module_loading import import_string
22
-from django.utils.translation import ugettext_lazy as _
23
-
24
-from openstack_auth import exceptions
25
-from openstack_auth import user as auth_user
26
-from openstack_auth import utils
27
-
28
-
29
-LOG = logging.getLogger(__name__)
30
-
31
-
32
-KEYSTONE_CLIENT_ATTR = "_keystoneclient"
33
-
34
-
35
-class KeystoneBackend(object):
36
-    """Django authentication backend for use with ``django.contrib.auth``."""
37
-
38
-    def __init__(self):
39
-        self._auth_plugins = None
40
-
41
-    @property
42
-    def auth_plugins(self):
43
-        if self._auth_plugins is None:
44
-            plugins = getattr(
45
-                settings,
46
-                'AUTHENTICATION_PLUGINS',
47
-                ['openstack_auth.plugin.password.PasswordPlugin',
48
-                 'openstack_auth.plugin.token.TokenPlugin'])
49
-
50
-            self._auth_plugins = [import_string(p)() for p in plugins]
51
-
52
-        return self._auth_plugins
53
-
54
-    def check_auth_expiry(self, auth_ref, margin=None):
55
-        if not utils.is_token_valid(auth_ref, margin):
56
-            msg = _("The authentication token issued by the Identity service "
57
-                    "has expired.")
58
-            LOG.warning("The authentication token issued by the Identity "
59
-                        "service appears to have expired before it was "
60
-                        "issued. This may indicate a problem with either your "
61
-                        "server or client configuration.")
62
-            raise exceptions.KeystoneAuthException(msg)
63
-        return True
64
-
65
-    def get_user(self, user_id):
66
-        """Returns the current user from the session data.
67
-
68
-        If authenticated, this return the user object based on the user ID
69
-        and session data.
70
-
71
-        .. note::
72
-
73
-          This required monkey-patching the ``contrib.auth`` middleware
74
-          to make the ``request`` object available to the auth backend class.
75
-
76
-        """
77
-        if (hasattr(self, 'request') and
78
-                user_id == self.request.session["user_id"]):
79
-            token = self.request.session['token']
80
-            endpoint = self.request.session['region_endpoint']
81
-            services_region = self.request.session['services_region']
82
-            user = auth_user.create_user_from_token(self.request, token,
83
-                                                    endpoint, services_region)
84
-            return user
85
-        else:
86
-            return None
87
-
88
-    def authenticate(self, auth_url=None, **kwargs):
89
-        """Authenticates a user via the Keystone Identity API."""
90
-        LOG.debug('Beginning user authentication')
91
-
92
-        if not auth_url:
93
-            auth_url = settings.OPENSTACK_KEYSTONE_URL
94
-
95
-        auth_url, url_fixed = utils.fix_auth_url_version_prefix(auth_url)
96
-        if url_fixed:
97
-            LOG.warning("The OPENSTACK_KEYSTONE_URL setting points to a v2.0 "
98
-                        "Keystone endpoint, but v3 is specified as the API "
99
-                        "version to use by Horizon. Using v3 endpoint for "
100
-                        "authentication.")
101
-
102
-        for plugin in self.auth_plugins:
103
-            unscoped_auth = plugin.get_plugin(auth_url=auth_url, **kwargs)
104
-
105
-            if unscoped_auth:
106
-                break
107
-        else:
108
-            msg = _('No authentication backend could be determined to '
109
-                    'handle the provided credentials.')
110
-            LOG.warning('No authentication backend could be determined to '
111
-                        'handle the provided credentials. This is likely a '
112
-                        'configuration error that should be addressed.')
113
-            raise exceptions.KeystoneAuthException(msg)
114
-
115
-        # the recent project id a user might have set in a cookie
116
-        recent_project = None
117
-        request = kwargs.get('request')
118
-        if request:
119
-            # Grab recent_project found in the cookie, try to scope
120
-            # to the last project used.
121
-            recent_project = request.COOKIES.get('recent_project')
122
-        unscoped_auth_ref = plugin.get_access_info(unscoped_auth)
123
-
124
-        # Check expiry for our unscoped auth ref.
125
-        self.check_auth_expiry(unscoped_auth_ref)
126
-
127
-        domain_name = kwargs.get('user_domain_name', None)
128
-        domain_auth, domain_auth_ref = plugin.get_domain_scoped_auth(
129
-            unscoped_auth, unscoped_auth_ref, domain_name)
130
-        scoped_auth, scoped_auth_ref = plugin.get_project_scoped_auth(
131
-            unscoped_auth, unscoped_auth_ref, recent_project=recent_project)
132
-
133
-        # Abort if there are no projects for this user and a valid domain
134
-        # token has not been obtained
135
-        #
136
-        # The valid use cases for a user login are:
137
-        #    Keystone v2: user must have a role on a project and be able
138
-        #                 to obtain a project scoped token
139
-        #    Keystone v3: 1) user can obtain a domain scoped token (user
140
-        #                    has a role on the domain they authenticated to),
141
-        #                    only, no roles on a project
142
-        #                 2) user can obtain a domain scoped token and has
143
-        #                    a role on a project in the domain they
144
-        #                    authenticated to (and can obtain a project scoped
145
-        #                    token)
146
-        #                 3) user cannot obtain a domain scoped token, but can
147
-        #                    obtain a project scoped token
148
-        if not scoped_auth_ref and domain_auth_ref:
149
-            # if the user can't obtain a project scoped token, set the scoped
150
-            # token to be the domain token, if valid
151
-            scoped_auth = domain_auth
152
-            scoped_auth_ref = domain_auth_ref
153
-        elif not scoped_auth_ref and not domain_auth_ref:
154
-            msg = _('You are not authorized for any projects.')
155
-            if utils.get_keystone_version() >= 3:
156
-                msg = _('You are not authorized for any projects or domains.')
157
-            raise exceptions.KeystoneAuthException(msg)
158
-
159
-        # Check expiry for our new scoped token.
160
-        self.check_auth_expiry(scoped_auth_ref)
161
-
162
-        # We want to try to use the same region we just logged into
163
-        # which may or may not be the default depending upon the order
164
-        # keystone uses
165
-        region_name = None
166
-        id_endpoints = scoped_auth_ref.service_catalog.\
167
-            get_endpoints(service_type='identity')
168
-        for id_endpoint in [cat for cat in id_endpoints['identity']]:
169
-            if auth_url in id_endpoint.values():
170
-                region_name = id_endpoint['region']
171
-                break
172
-
173
-        interface = getattr(settings, 'OPENSTACK_ENDPOINT_TYPE', 'public')
174
-
175
-        endpoint, url_fixed = utils.fix_auth_url_version_prefix(
176
-            scoped_auth_ref.service_catalog.url_for(
177
-                service_type='identity',
178
-                interface=interface,
179
-                region_name=region_name))
180
-        if url_fixed:
181
-            LOG.warning("The Keystone URL in service catalog points to a v2.0 "
182
-                        "Keystone endpoint, but v3 is specified as the API "
183
-                        "version to use by Horizon. Using v3 endpoint for "
184
-                        "authentication.")
185
-
186
-        # If we made it here we succeeded. Create our User!
187
-        unscoped_token = unscoped_auth_ref.auth_token
188
-
189
-        user = auth_user.create_user_from_token(
190
-            request,
191
-            auth_user.Token(scoped_auth_ref, unscoped_token=unscoped_token),
192
-            endpoint,
193
-            services_region=region_name)
194
-
195
-        if request is not None:
196
-            # if no k2k providers exist then the function returns quickly
197
-            utils.store_initial_k2k_session(auth_url, request, scoped_auth_ref,
198
-                                            unscoped_auth_ref)
199
-            request.session['unscoped_token'] = unscoped_token
200
-            if domain_auth_ref:
201
-                # check django session engine, if using cookies, this will not
202
-                # work, as it will overflow the cookie so don't add domain
203
-                # scoped token to the session and put error in the log
204
-                if utils.using_cookie_backed_sessions():
205
-                    LOG.error('Using signed cookies as SESSION_ENGINE with '
206
-                              'OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT is '
207
-                              'enabled. This disables the ability to '
208
-                              'perform identity operations due to cookie size '
209
-                              'constraints.')
210
-                else:
211
-                    request.session['domain_token'] = domain_auth_ref
212
-
213
-            request.user = user
214
-            timeout = getattr(settings, "SESSION_TIMEOUT", 3600)
215
-            token_life = user.token.expires - datetime.datetime.now(pytz.utc)
216
-            session_time = min(timeout, int(token_life.total_seconds()))
217
-            request.session.set_expiry(session_time)
218
-
219
-            keystone_client_class = utils.get_keystone_client().Client
220
-            session = utils.get_session()
221
-            scoped_client = keystone_client_class(session=session,
222
-                                                  auth=scoped_auth)
223
-
224
-            # Support client caching to save on auth calls.
225
-            setattr(request, KEYSTONE_CLIENT_ATTR, scoped_client)
226
-
227
-        LOG.debug('Authentication completed.')
228
-        return user
229
-
230
-    def get_group_permissions(self, user, obj=None):
231
-        """Returns an empty set since Keystone doesn't support "groups"."""
232
-        # Keystone V3 added "groups". The Auth token response includes the
233
-        # roles from the user's Group assignment. It should be fine just
234
-        # returning an empty set here.
235
-        return set()
236
-
237
-    def get_all_permissions(self, user, obj=None):
238
-        """Returns a set of permission strings that the user has.
239
-
240
-        This permission available to the user is derived from the user's
241
-        Keystone "roles".
242
-
243
-        The permissions are returned as ``"openstack.{{ role.name }}"``.
244
-        """
245
-        if user.is_anonymous() or obj is not None:
246
-            return set()
247
-        # TODO(gabrielhurley): Integrate policy-driven RBAC
248
-        #                      when supported by Keystone.
249
-        role_perms = {utils.get_role_permission(role['name'])
250
-                      for role in user.roles}
251
-
252
-        services = []
253
-        for service in user.service_catalog:
254
-            try:
255
-                service_type = service['type']
256
-            except KeyError:
257
-                continue
258
-            service_regions = [utils.get_endpoint_region(endpoint) for endpoint
259
-                               in service.get('endpoints', [])]
260
-            if user.services_region in service_regions:
261
-                services.append(service_type.lower())
262
-        service_perms = {"openstack.services.%s" % service
263
-                         for service in services}
264
-        return role_perms | service_perms
265
-
266
-    def has_perm(self, user, perm, obj=None):
267
-        """Returns True if the given user has the specified permission."""
268
-        if not user.is_active:
269
-            return False
270
-        return perm in self.get_all_permissions(user, obj)
271
-
272
-    def has_module_perms(self, user, app_label):
273
-        """Returns True if user has any permissions in the given app_label.
274
-
275
-        Currently this matches for the app_label ``"openstack"``.
276
-        """
277
-        if not user.is_active:
278
-            return False
279
-        for perm in self.get_all_permissions(user):
280
-            if perm[:perm.index('.')] == app_label:
281
-                return True
282
-        return False

+ 0
- 17
openstack_auth/exceptions.py View File

@@ -1,17 +0,0 @@
1
-# Licensed under the Apache License, Version 2.0 (the "License");
2
-# you may not use this file except in compliance with the License.
3
-# You may obtain a copy of the License at
4
-#
5
-#    http://www.apache.org/licenses/LICENSE-2.0
6
-#
7
-# Unless required by applicable law or agreed to in writing, software
8
-# distributed under the License is distributed on an "AS IS" BASIS,
9
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
10
-# implied.
11
-# See the License for the specific language governing permissions and
12
-# limitations under the License.
13
-
14
-
15
-class KeystoneAuthException(Exception):
16
-    """Generic error class to identify and catch our own errors."""
17
-    pass

+ 0
- 155
openstack_auth/forms.py View File

@@ -1,155 +0,0 @@
1
-# Licensed under the Apache License, Version 2.0 (the "License");
2
-# you may not use this file except in compliance with the License.
3
-# You may obtain a copy of the License at
4
-#
5
-#    http://www.apache.org/licenses/LICENSE-2.0
6
-#
7
-# Unless required by applicable law or agreed to in writing, software
8
-# distributed under the License is distributed on an "AS IS" BASIS,
9
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
10
-# implied.
11
-# See the License for the specific language governing permissions and
12
-# limitations under the License.
13
-
14
-import collections
15
-import logging
16
-
17
-from django.conf import settings
18
-from django.contrib.auth import authenticate
19
-from django.contrib.auth import forms as django_auth_forms
20
-from django import forms
21
-from django.utils.translation import ugettext_lazy as _
22
-from django.views.decorators.debug import sensitive_variables
23
-
24
-from openstack_auth import exceptions
25
-from openstack_auth import utils
26
-
27
-
28
-LOG = logging.getLogger(__name__)
29
-
30
-
31
-class Login(django_auth_forms.AuthenticationForm):
32
-    """Form used for logging in a user.
33
-
34
-    Handles authentication with Keystone by providing the domain name, username
35
-    and password. A scoped token is fetched after successful authentication.
36
-
37
-    A domain name is required if authenticating with Keystone V3 running
38
-    multi-domain configuration.
39
-
40
-    If the user authenticated has a default project set, the token will be
41
-    automatically scoped to their default project.
42
-
43
-    If the user authenticated has no default project set, the authentication
44
-    backend will try to scope to the projects returned from the user's assigned
45
-    projects. The first successful project scoped will be returned.
46
-
47
-    Inherits from the base ``django.contrib.auth.forms.AuthenticationForm``
48
-    class for added security features.
49
-    """
50
-    use_required_attribute = False
51
-    region = forms.ChoiceField(label=_("Region"), required=False)
52
-    username = forms.CharField(
53
-        label=_("User Name"),
54
-        widget=forms.TextInput(attrs={"autofocus": "autofocus"}))
55
-    password = forms.CharField(label=_("Password"),
56
-                               widget=forms.PasswordInput(render_value=False))
57
-
58
-    def __init__(self, *args, **kwargs):
59
-        super(Login, self).__init__(*args, **kwargs)
60
-        fields_ordering = ['username', 'password', 'region']
61
-        if getattr(settings,
62
-                   'OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT',
63
-                   False):
64
-            last_domain = self.request.COOKIES.get('login_domain', None)
65
-            if getattr(settings,
66
-                       'OPENSTACK_KEYSTONE_DOMAIN_DROPDOWN',
67
-                       False):
68
-                self.fields['domain'] = forms.ChoiceField(
69
-                    label=_("Domain"),
70
-                    initial=last_domain,
71
-                    required=True,
72
-                    choices=getattr(settings,
73
-                                    'OPENSTACK_KEYSTONE_DOMAIN_CHOICES',
74
-                                    ()))
75
-            else:
76
-                self.fields['domain'] = forms.CharField(
77
-                    initial=last_domain,
78
-                    label=_("Domain"),
79
-                    required=True,
80
-                    widget=forms.TextInput(attrs={"autofocus": "autofocus"}))
81
-            self.fields['username'].widget = forms.widgets.TextInput()
82
-            fields_ordering = ['domain', 'username', 'password', 'region']
83
-        self.fields['region'].choices = self.get_region_choices()
84
-        if len(self.fields['region'].choices) == 1:
85
-            self.fields['region'].initial = self.fields['region'].choices[0][0]
86
-            self.fields['region'].widget = forms.widgets.HiddenInput()
87
-        elif len(self.fields['region'].choices) > 1:
88
-            self.fields['region'].initial = self.request.COOKIES.get(
89
-                'login_region')
90
-
91
-        # if websso is enabled and keystone version supported
92
-        # prepend the websso_choices select input to the form
93
-        if utils.is_websso_enabled():
94
-            initial = getattr(settings, 'WEBSSO_INITIAL_CHOICE', 'credentials')
95
-            self.fields['auth_type'] = forms.ChoiceField(
96
-                label=_("Authenticate using"),
97
-                choices=getattr(settings, 'WEBSSO_CHOICES', ()),
98
-                required=False,
99
-                initial=initial)
100
-            # add auth_type to the top of the list
101
-            fields_ordering.insert(0, 'auth_type')
102
-
103
-        # websso is enabled, but keystone version is not supported
104
-        elif getattr(settings, 'WEBSSO_ENABLED', False):
105
-            msg = ("Websso is enabled but horizon is not configured to work " +
106
-                   "with keystone version 3 or above.")
107
-            LOG.warning(msg)
108
-        self.fields = collections.OrderedDict(
109
-            (key, self.fields[key]) for key in fields_ordering)
110
-
111
-    @staticmethod
112
-    def get_region_choices():
113
-        default_region = (settings.OPENSTACK_KEYSTONE_URL, "Default Region")
114
-        regions = getattr(settings, 'AVAILABLE_REGIONS', [])
115
-        if not regions:
116
-            regions = [default_region]
117
-        return regions
118
-
119
-    @sensitive_variables()
120
-    def clean(self):
121
-        default_domain = getattr(settings,
122
-                                 'OPENSTACK_KEYSTONE_DEFAULT_DOMAIN',
123
-                                 'Default')
124
-        username = self.cleaned_data.get('username')
125
-        password = self.cleaned_data.get('password')
126
-        region = self.cleaned_data.get('region')
127
-        domain = self.cleaned_data.get('domain', default_domain)
128
-
129
-        if not (username and password):
130
-            # Don't authenticate, just let the other validators handle it.
131
-            return self.cleaned_data
132
-
133
-        try:
134
-            self.user_cache = authenticate(request=self.request,
135
-                                           username=username,
136
-                                           password=password,
137
-                                           user_domain_name=domain,
138
-                                           auth_url=region)
139
-            msg = 'Login successful for user "%(username)s", remote address '\
140
-                '%(remote_ip)s.' % {
141
-                    'username': username,
142
-                    'remote_ip': utils.get_client_ip(self.request)
143
-                }
144
-            LOG.info(msg)
145
-        except exceptions.KeystoneAuthException as exc:
146
-            msg = 'Login failed for user "%(username)s", remote address '\
147
-                '%(remote_ip)s.' % {
148
-                    'username': username,
149
-                    'remote_ip': utils.get_client_ip(self.request)
150
-                }
151
-            LOG.warning(msg)
152
-            raise forms.ValidationError(exc)
153
-        if hasattr(self, 'check_for_test_cookie'):  # Dropped in django 1.7
154
-            self.check_for_test_cookie()
155
-        return self.cleaned_data

+ 0
- 74
openstack_auth/locale/cs/LC_MESSAGES/django.po View File

@@ -1,74 +0,0 @@
1
-# Translations template for django_openstack_auth.
2
-# Copyright (C) 2015 ORGANIZATION
3
-# This file is distributed under the same license as the
4
-# django_openstack_auth project.
5
-#
6
-# Translators:
7
-# Zbyněk Schwarz <zbynek.schwarz@gmail.com>, 2014-2015
8
-# Stanislav Ulrych <stanislav.ulrych@ultimum.io>, 2016. #zanata
9
-msgid ""
10
-msgstr ""
11
-"Project-Id-Version: django_openstack_auth 3.1.1.dev1\n"
12
-"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
13
-"POT-Creation-Date: 2017-01-25 19:41+0000\n"
14
-"MIME-Version: 1.0\n"
15
-"Content-Type: text/plain; charset=UTF-8\n"
16
-"Content-Transfer-Encoding: 8bit\n"
17
-"PO-Revision-Date: 2016-06-09 07:46+0000\n"
18
-"Last-Translator: Lenka Husáková <lenka.husakova@ultimum.io>\n"
19
-"Language: cs\n"
20
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
21
-"Generated-By: Babel 2.0\n"
22
-"X-Generator: Zanata 3.7.3\n"
23
-"Language-Team: Czech\n"
24
-
25
-msgid "An error occurred authenticating. Please try again later."
26
-msgstr "Při ověřování se vyskytla chyba. Zkuste to prosím znovu později."
27
-
28
-msgid "Authenticate using"
29
-msgstr "Přihlásit se pomocí"
30
-
31
-msgid "Domain"
32
-msgstr "Doména"
33
-
34
-msgid "Invalid credentials."
35
-msgstr "Neplatné přihlašovací údaje."
36
-
37
-msgid ""
38
-"No authentication backend could be determined to handle the provided "
39
-"credentials."
40
-msgstr ""
41
-"Nebyl rozpoznán žádný vhodný autentizační backend pro ověření zadaných "
42
-"přihlašovacích údajů."
43
-
44
-msgid "Password"
45
-msgstr "Heslo"
46
-
47
-#, python-format
48
-msgid "Project switch failed for user \"%(username)s\"."
49
-msgstr "Změna projektu selhala u uživatele \"%(username)s\"."
50
-
51
-msgid "Region"
52
-msgstr "Region"
53
-
54
-#, python-format
55
-msgid "Switch to project \"%(project_name)s\" successful."
56
-msgstr "Změna projektu \"%(project_name)s\" byla úspěšná."
57
-
58
-msgid "The authentication token issued by the Identity service has expired."
59
-msgstr "Autentizační token poskytnutý službou identit vypršel."
60
-
61
-msgid "Unable to establish connection to keystone endpoint."
62
-msgstr "Nelze se připojit ke keystone endpointu."
63
-
64
-msgid "Unable to retrieve authorized projects."
65
-msgstr "Nelze získat oprávněné projekty."
66
-
67
-msgid "User Name"
68
-msgstr "Uživatelské jméno"
69
-
70
-msgid "You are not authorized for any projects or domains."
71
-msgstr "Nemáte oprávnění k žádným projektům či doménám."
72
-
73
-msgid "You are not authorized for any projects."
74
-msgstr "Nemáte oprávnění k žádným projektům."

+ 0
- 103
openstack_auth/locale/de/LC_MESSAGES/django.po View File

@@ -1,103 +0,0 @@
1
-# Translations template for django_openstack_auth.
2
-# Copyright (C) 2015 ORGANIZATION
3
-# This file is distributed under the same license as the
4
-# django_openstack_auth project.
5
-#
6
-# Translators:
7
-# Andreas Jaeger <jaegerandi@gmail.com>, 2014
8
-# Robert Simai, 2015
9
-# Robert Simai, 2015
10
-# Frank Kloeker <eumel@arcor.de>, 2016. #zanata
11
-# Andreas Jaeger <jaegerandi@gmail.com>, 2017. #zanata
12
-# Robert Simai <robert.simai@suse.com>, 2017. #zanata
13
-msgid ""
14
-msgstr ""
15
-"Project-Id-Version: django_openstack_auth 3.1.2.dev14\n"
16
-"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
17
-"POT-Creation-Date: 2017-04-07 13:52+0000\n"
18
-"MIME-Version: 1.0\n"
19
-"Content-Type: text/plain; charset=UTF-8\n"
20
-"Content-Transfer-Encoding: 8bit\n"
21
-"PO-Revision-Date: 2017-03-28 08:35+0000\n"
22
-"Last-Translator: Robert Simai <robert.simai@suse.com>\n"
23
-"Language: de\n"
24
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
25
-"Generated-By: Babel 2.0\n"
26
-"X-Generator: Zanata 3.9.6\n"
27
-"Language-Team: German\n"
28
-
29
-msgid "An error occurred authenticating. Please try again later."
30
-msgstr ""
31
-"Während der Authentifizierung ist ein Fehler aufgetreten. Bitte versuchen "
32
-"Sie es später noch einmal."
33
-
34
-msgid "Authenticate using"
35
-msgstr "Authentifizieren mit"
36
-
37
-msgid "Could not find service provider ID on Keystone."
38
-msgstr "Dienstanbieter ID in Keystone nicht gefunden."
39
-
40
-msgid "Domain"
41
-msgstr "Domäne"
42
-
43
-msgid "Invalid credentials."
44
-msgstr "Unzureichende Berechtigung."
45
-
46
-msgid "K2K Federation not setup for this session"
47
-msgstr "K2K Verbund ist für diese Sitzung nicht eingerichtet"
48
-
49
-msgid ""
50
-"No authentication backend could be determined to handle the provided "
51
-"credentials."
52
-msgstr ""
53
-"Es konnte kein Authentifizierungsbackend für die angegebene Legitimierung "
54
-"gefunden werden."
55
-
56
-msgid "Password"
57
-msgstr "Passwort"
58
-
59
-#, python-format
60
-msgid "Please consider changing your password, it will expire in %s minutes"
61
-msgstr "Bitte ändern Sie Ihr Passwort. Es läuft in %s Minuten ab."
62
-
63
-#, python-format
64
-msgid "Project switch failed for user \"%(username)s\"."
65
-msgstr "Projektumschaltung für Benutzer \"%(username)s\" fehlgeschlagen."
66
-
67
-msgid "Region"
68
-msgstr "Region"
69
-
70
-#, python-format
71
-msgid "Service provider authentication failed. %s"
72
-msgstr "Dienstanbieter Authentifizierung fehlgeschlagen. %s"
73
-
74
-#, python-format
75
-msgid "Switch to Keystone Provider \"%(keystone_provider)s\"successful."
76
-msgstr ""
77
-"Umschalten zum Keystone Anbieter \"%(keystone_provider)s\" erfolgreich."
78
-
79
-#, python-format
80
-msgid "Switch to project \"%(project_name)s\" successful."
81
-msgstr "Umschalten zum Projekt \"%(project_name)s\" erfolgreich."
82
-
83
-msgid "The authentication token issued by the Identity service has expired."
84
-msgstr ""
85
-"Das vom Identitätsdienst ausgegebene Authentifizierungs-Token ist abgelaufen."
86
-
87
-msgid "Unable to establish connection to keystone endpoint."
88
-msgstr "Es kann keine Verbindung zum Keystone Endpunkt aufgebaut werden."
89
-
90
-msgid "Unable to retrieve authorized domains."
91
-msgstr "Die authorisierten Domänen können nicht abgerufen werden."
92
-
93
-msgid "Unable to retrieve authorized projects."
94
-msgstr "Authorisierte Projekte können nicht abgerufen werden."
95
-
96
-msgid "User Name"
97
-msgstr "Benutzername"
98
-
99
-msgid "You are not authorized for any projects or domains."
100
-msgstr "Sie sind nicht autorisiert für irgendein Projekt oder eine Domäne."
101
-
102
-msgid "You are not authorized for any projects."
103
-msgstr "Sie sind für kein Projekt berechtigt."

+ 0
- 75
openstack_auth/locale/en_AU/LC_MESSAGES/django.po View File

@@ -1,75 +0,0 @@
1
-# Translations template for django_openstack_auth.
2
-# Copyright (C) 2015 ORGANIZATION
3
-# This file is distributed under the same license as the
4
-# django_openstack_auth project.
5
-#
6
-# Translators:
7
-# Tom Fifield <tom@openstack.org>, 2015
8
-# Andreas Jaeger <jaegerandi@gmail.com>, 2016. #zanata
9
-# Tom Fifield <tom@openstack.org>, 2016. #zanata
10
-msgid ""
11
-msgstr ""
12
-"Project-Id-Version: django_openstack_auth 3.1.1.dev1\n"
13
-"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
14
-"POT-Creation-Date: 2017-01-25 19:41+0000\n"
15
-"MIME-Version: 1.0\n"
16
-"Content-Type: text/plain; charset=UTF-8\n"
17
-"Content-Transfer-Encoding: 8bit\n"
18
-"PO-Revision-Date: 2016-09-19 04:53+0000\n"
19
-"Last-Translator: Tom Fifield <tom@openstack.org>\n"
20
-"Language: en-AU\n"
21
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
22
-"Generated-By: Babel 2.0\n"
23
-"X-Generator: Zanata 3.7.3\n"
24
-"Language-Team: English (Australia)\n"
25
-
26
-msgid "An error occurred authenticating. Please try again later."
27
-msgstr "An error occurred authenticating. Please try again later."
28
-
29
-msgid "Authenticate using"
30
-msgstr "Authenticate using"
31
-
32
-msgid "Domain"
33
-msgstr "Domain"
34
-
35
-msgid "Invalid credentials."
36
-msgstr "Invalid credentials."
37
-
38
-msgid ""
39
-"No authentication backend could be determined to handle the provided "
40
-"credentials."
41
-msgstr ""
42
-"No authentication backend could be determined to handle the provided "
43
-"credentials."
44
-
45
-msgid "Password"
46
-msgstr "Password"
47
-
48
-#, python-format
49
-msgid "Project switch failed for user \"%(username)s\"."
50
-msgstr "Project switch failed for user \"%(username)s\"."
51
-
52
-msgid "Region"
53
-msgstr "Region"
54
-
55
-#, python-format
56
-msgid "Switch to project \"%(project_name)s\" successful."
57
-msgstr "Switch to project \"%(project_name)s\" successful."
58
-
59
-msgid "The authentication token issued by the Identity service has expired."
60
-msgstr "The authentication token issued by the Identity service has expired."
61
-
62
-msgid "Unable to establish connection to keystone endpoint."
63
-msgstr "Unable to establish connection to keystone endpoint."
64
-
65
-msgid "Unable to retrieve authorized projects."
66
-msgstr "Unable to retrieve authorized projects."
67
-
68
-msgid "User Name"
69
-msgstr "User Name"
70
-
71
-msgid "You are not authorized for any projects or domains."
72
-msgstr "You are not authorised for any projects or domains."
73
-
74
-msgid "You are not authorized for any projects."
75
-msgstr "You are not authorized for any projects."

+ 0
- 97
openstack_auth/locale/en_GB/LC_MESSAGES/django.po View File

@@ -1,97 +0,0 @@
1
-# Translations template for django_openstack_auth.
2
-# Copyright (C) 2015 ORGANIZATION
3
-# This file is distributed under the same license as the
4
-# django_openstack_auth project.
5
-#
6
-# Translators:
7
-# Rob Cresswell <robert.cresswell@outlook.com>, 2015
8
-# Andi Chandler <andi@gowling.com>, 2016. #zanata
9
-# Andreas Jaeger <jaegerandi@gmail.com>, 2016. #zanata
10
-# Andi Chandler <andi@gowling.com>, 2017. #zanata
11
-msgid ""
12
-msgstr ""
13
-"Project-Id-Version: django_openstack_auth 3.5.1.dev13\n"
14
-"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
15
-"POT-Creation-Date: 2017-09-21 00:53+0000\n"
16
-"MIME-Version: 1.0\n"
17
-"Content-Type: text/plain; charset=UTF-8\n"
18
-"Content-Transfer-Encoding: 8bit\n"
19
-"PO-Revision-Date: 2017-10-05 03:49+0000\n"
20
-"Last-Translator: Andi Chandler <andi@gowling.com>\n"
21
-"Language: en-GB\n"
22
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
23
-"Generated-By: Babel 2.0\n"
24
-"X-Generator: Zanata 3.9.6\n"
25
-"Language-Team: English (United Kingdom)\n"
26
-
27
-msgid "An error occurred authenticating. Please try again later."
28
-msgstr "An error occurred authenticating. Please try again later."
29
-
30
-msgid "Authenticate using"
31
-msgstr "Authenticate using"
32
-
33
-msgid "Could not find service provider ID on Keystone."
34
-msgstr "Could not find service provider ID on Keystone."
35
-
36
-msgid "Domain"
37
-msgstr "Domain"
38
-
39
-msgid "Invalid credentials."
40
-msgstr "Invalid credentials."
41
-
42
-msgid "K2K Federation not setup for this session"
43
-msgstr "K2K Federation not setup for this session"
44
-
45
-msgid ""
46
-"No authentication backend could be determined to handle the provided "
47
-"credentials."
48
-msgstr ""
49
-"No authentication backend could be determined to handle the provided "
50
-"credentials."
51
-
52
-msgid "Password"
53
-msgstr "Password"
54
-
55
-#, python-format
56
-msgid "Please consider changing your password, it will expire in %s minutes"
57
-msgstr "Please consider changing your password, it will expire in %s minutes"
58
-
59
-#, python-format
60
-msgid "Project switch failed for user \"%(username)s\"."
61
-msgstr "Project switch failed for user \"%(username)s\"."
62
-
63
-msgid "Region"
64
-msgstr "Region"
65
-
66
-#, python-format
67
-msgid "Service provider authentication failed. %s"
68
-msgstr "Service provider authentication failed. %s"
69
-
70
-#, python-format
71
-msgid "Switch to Keystone Provider \"%(keystone_provider)s\"successful."
72
-msgstr "Switch to Keystone Provider \"%(keystone_provider)s\"successful."
73
-
74
-#, python-format
75
-msgid "Switch to project \"%(project_name)s\" successful."
76
-msgstr "Switch to project \"%(project_name)s\" successful."
77
-
78
-msgid "The authentication token issued by the Identity service has expired."
79
-msgstr "The authentication token issued by the Identity service has expired."
80
-
81
-msgid "Unable to establish connection to keystone endpoint."
82
-msgstr "Unable to establish connection to keystone endpoint."
83
-
84
-msgid "Unable to retrieve authorized domains."
85
-msgstr "Unable to retrieve authorised domains."
86
-
87
-msgid "Unable to retrieve authorized projects."
88
-msgstr "Unable to retrieve authorised projects."
89
-
90
-msgid "User Name"
91
-msgstr "User Name"
92
-
93
-msgid "You are not authorized for any projects or domains."
94
-msgstr "You are not authorised for any projects or domains."
95
-
96
-msgid "You are not authorized for any projects."
97
-msgstr "You are not authorised for any projects."

+ 0
- 97
openstack_auth/locale/es/LC_MESSAGES/django.po View File

@@ -1,97 +0,0 @@
1
-# Translations template for django_openstack_auth.
2
-# Copyright (C) 2015 ORGANIZATION
3
-# This file is distributed under the same license as the
4
-# django_openstack_auth project.
5
-#
6
-# Translators:
7
-# Adriana Chisco Landazábal <achisco94@gmail.com>, 2015
8
-# Alberto Molina Coballes <alb.molina@gmail.com>, 2014
9
-# dario hereñu <magallania@gmail.com>, 2015
10
-# luis gil, 2015
11
-# Marian Tort <marian.tort@gmail.com>, 2014
12
-# Andreas Jaeger <jaegerandi@gmail.com>, 2016. #zanata
13
-# Zeus Arias Lucero <zeusariaslucero@gmail.com>, 2017. #zanata
14
-msgid ""
15
-msgstr ""
16
-"Project-Id-Version: django_openstack_auth 3.5.1.dev10\n"
17
-"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
18
-"POT-Creation-Date: 2017-09-12 23:53+0000\n"
19
-"MIME-Version: 1.0\n"
20
-"Content-Type: text/plain; charset=UTF-8\n"
21
-"Content-Transfer-Encoding: 8bit\n"
22
-"PO-Revision-Date: 2017-08-24 09:49+0000\n"
23
-"Last-Translator: Zeus Arias Lucero <zeusariaslucero@gmail.com>\n"
24
-"Language: es\n"
25
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
26
-"Generated-By: Babel 2.0\n"
27
-"X-Generator: Zanata 3.9.6\n"
28
-"Language-Team: Spanish\n"
29
-
30
-msgid "An error occurred authenticating. Please try again later."
31
-msgstr "Se produjo un error de autenticación. Inténtelo de nuevo más tarde."
32
-
33
-msgid "Authenticate using"
34
-msgstr "Autenticación con"
35
-
36
-msgid "Could not find service provider ID on Keystone."
37
-msgstr "No se ha podido encontrar el ID del proveedor de servicios de Keystone"
38
-
39
-msgid "Domain"
40
-msgstr "Dominio"
41
-
42
-msgid "Invalid credentials."
43
-msgstr "Credenciales no válidas"
44
-
45
-msgid "K2K Federation not setup for this session"
46
-msgstr "K2K Federation no esta configurada para esta sesión"
47
-
48
-msgid ""
49
-"No authentication backend could be determined to handle the provided "
50
-"credentials."
51
-msgstr ""
52
-"No se ha podido determinar un backend de autenticación para gestionar las "
53
-"credenciales proporcionadas."
54
-
55
-msgid "Password"
56
-msgstr "Contraseña"
57
-
58
-#, python-format
59
-msgid "Please consider changing your password, it will expire in %s minutes"
60
-msgstr "Por favor considera cambiar su contraseña, va a expirar en %s minutos"
61
-
62
-#, python-format
63
-msgid "Project switch failed for user \"%(username)s\"."
64
-msgstr "Intercambio de projecto fracasó para el usuario \"%(username)s\"."
65
-
66
-msgid "Region"
67
-msgstr "Región"
68
-
69
-#, python-format
70
-msgid "Switch to Keystone Provider \"%(keystone_provider)s\"successful."
71
-msgstr ""
72
-"Cambio al proveedor de Keystone \"%(keystone_provider)s\" de manera exitosa."
73
-
74
-#, python-format
75
-msgid "Switch to project \"%(project_name)s\" successful."
76
-msgstr "Cambio al proyecto \"%(project_name)s\" de manera exitosa."
77
-
78
-msgid "The authentication token issued by the Identity service has expired."
79
-msgstr "El token de autenticación emitido por Identity Service ha expirado."
80
-
81
-msgid "Unable to establish connection to keystone endpoint."
82
-msgstr "No ha sido posible establecer conexión con el endpoint de keystone."
83
-
84
-msgid "Unable to retrieve authorized domains."
85
-msgstr "No ha sido posible recuperar los dominios autorizados."
86
-
87
-msgid "Unable to retrieve authorized projects."
88
-msgstr "No ha sido posible obtener los proyectos autorizados."
89
-
90
-msgid "User Name"
91
-msgstr "Usuario"
92
-
93
-msgid "You are not authorized for any projects or domains."
94
-msgstr "No tiene autorización para ningún proyecto ni dominio."
95
-
96
-msgid "You are not authorized for any projects."
97
-msgstr "No está autorizado en ningún proyecto."

+ 0
- 74
openstack_auth/locale/es_MX/LC_MESSAGES/django.po View File

@@ -1,74 +0,0 @@
1
-# Translations template for django_openstack_auth.
2
-# Copyright (C) 2015 ORGANIZATION
3
-# This file is distributed under the same license as the
4
-# django_openstack_auth project.
5
-#
6
-# Translators:
7
-# Heleno Jimenez de la Cruz <heleno.jimenez@gmail.com>, 2015
8
-# Andreas Jaeger <jaegerandi@gmail.com>, 2016. #zanata
9
-msgid ""
10
-msgstr ""
11
-"Project-Id-Version: django_openstack_auth 3.1.1.dev1\n"
12
-"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
13
-"POT-Creation-Date: 2017-01-25 19:41+0000\n"
14
-"MIME-Version: 1.0\n"
15
-"Content-Type: text/plain; charset=UTF-8\n"
16
-"Content-Transfer-Encoding: 8bit\n"
17
-"PO-Revision-Date: 2015-09-18 03:50+0000\n"
18
-"Last-Translator: Heleno Jimenez de la Cruz <heleno.jimenez@gmail.com>\n"
19
-"Language: es-MX\n"
20
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
21
-"Generated-By: Babel 2.0\n"
22
-"X-Generator: Zanata 3.7.3\n"
23
-"Language-Team: Spanish (Mexico)\n"
24
-
25
-msgid "An error occurred authenticating. Please try again later."
26
-msgstr ""
27
-"Se ha producido un error de autenticación. Por favor inténtelo de nuevo más "
28
-"tarde."
29
-
30
-msgid "Authenticate using"
31
-msgstr "Autentificar usando"
32
-
33
-msgid "Domain"
34
-msgstr "Dominio"
35
-
36
-msgid "Invalid credentials."
37
-msgstr "Credenciales inválidas."
38
-
39
-msgid ""
40
-"No authentication backend could be determined to handle the provided "
41
-"credentials."
42
-msgstr ""
43
-"Autentificación de soporte no puede ser determinada para manejar las "
44
-"credenciales proveidas."
45
-
46
-msgid "Password"
47
-msgstr "Contraseña"
48
-
49
-#, python-format
50
-msgid "Project switch failed for user \"%(username)s\"."
51
-msgstr "Cambio de proyecto fallido para el usuario \"%(username)s\"."
52
-
53
-msgid "Region"
54
-msgstr "Región."
55
-
56
-#, python-format
57
-msgid "Switch to project \"%(project_name)s\" successful."
58
-msgstr "Cambio al proyecto \"%(project_name)s\" satisfactorio."
59
-
60
-msgid "The authentication token issued by the Identity service has expired."
61
-msgstr ""
62
-"El token de autenticación otorgado por el servicio de identidad ha expirado."
63
-
64
-msgid "Unable to establish connection to keystone endpoint."
65
-msgstr "No es posible establecer conexión a punto final de la clave base."
66
-
67
-msgid "Unable to retrieve authorized projects."
68
-msgstr "No se pueden recuperar los proyectos autorizados."
69
-
70
-msgid "User Name"
71
-msgstr "Nombre de Usuario"
72
-
73
-msgid "You are not authorized for any projects."
74
-msgstr "No estás autorizado para algunos proyectos."

+ 0
- 105
openstack_auth/locale/fr/LC_MESSAGES/django.po View File

@@ -1,105 +0,0 @@
1
-# Translations template for django_openstack_auth.
2
-# Copyright (C) 2015 ORGANIZATION
3
-# This file is distributed under the same license as the
4
-# django_openstack_auth project.
5
-#
6
-# Translators:
7
-# Cédric Savignan <liced@liced.fr>, 2015
8
-# Corinne Verheyde <cverheyd@hotmail.com>, 2015
9
-# François Bureau, 2015
10
-# Maxime COQUEREL <max.coquerel@gmail.com>, 2015
11
-# Patte D <pattedeph@gmail.com>, 2015
12
-# Xavier Gauvrit <xavier.gauvrit@cloudwatt.com>, 2014
13
-# Andreas Jaeger <jaegerandi@gmail.com>, 2016. #zanata
14
-# Gérald LONLAS <g.lonlas@gmail.com>, 2016. #zanata
15
-# JF Taltavull <jftalta@gmail.com>, 2017. #zanata
16
-# Loic Nicolle <loic.nicolle@orange.com>, 2017. #zanata
17
-msgid ""
18
-msgstr ""
19
-"Project-Id-Version: django_openstack_auth 3.4.1.dev1\n"
20
-"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
21
-"POT-Creation-Date: 2017-07-19 17:16+0000\n"
22
-"MIME-Version: 1.0\n"
23
-"Content-Type: text/plain; charset=UTF-8\n"
24
-"Content-Transfer-Encoding: 8bit\n"
25
-"PO-Revision-Date: 2017-07-19 09:06+0000\n"
26
-"Last-Translator: Loic Nicolle <loic.nicolle@orange.com>\n"
27
-"Language: fr\n"
28
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
29
-"Generated-By: Babel 2.0\n"
30
-"X-Generator: Zanata 3.9.6\n"
31
-"Language-Team: French\n"
32
-
33
-msgid "An error occurred authenticating. Please try again later."
34
-msgstr ""
35
-"Une erreur s'est produite pendant l'authentification. Veuillez réessayer "
36
-"ultérieurement."
37
-
38
-msgid "Authenticate using"
39
-msgstr "Mode d'authentification"
40
-
41
-msgid "Could not find service provider ID on Keystone."
42
-msgstr "Impossible de trouver l'ID du fournisseur de services sur Keystone."
43
-
44
-msgid "Domain"
45
-msgstr "Domaine"
46
-
47
-msgid "Invalid credentials."
48
-msgstr "Informations d'authentification non valides."
49
-
50
-msgid "K2K Federation not setup for this session"
51
-msgstr "La fédération K2K n'a pas été configurée pour cette session"
52
-
53
-msgid ""
54
-"No authentication backend could be determined to handle the provided "
55
-"credentials."
56
-msgstr "Aucun backend d'authentification pour gérer les informations fournies."
57
-
58
-msgid "Password"
59
-msgstr "Mot de passe"
60
-
61
-#, python-format
62
-msgid "Please consider changing your password, it will expire in %s minutes"
63
-msgstr "Merci de changer votre mot de passe, il va expirer dans %s minutes"
64
-
65
-#, python-format
66
-msgid "Project switch failed for user \"%(username)s\"."
67
-msgstr "La bascule de projet a échoué pour l'utilisateur \"%(username)s\"."
68
-
69
-msgid "Region"
70
-msgstr "Région"
71
-
72
-#, python-format
73
-msgid "Service provider authentication failed. %s"
74
-msgstr "L'authentification du fournisseur de services a échoué. %s"
75
-
76
-#, python-format
77
-msgid "Switch to Keystone Provider \"%(keystone_provider)s\"successful."
78
-msgstr ""
79
-"Bascule vers le fournisseur Keystone \"%(keystone_provider)s\" réussie."
80
-
81
-#, python-format
82
-msgid "Switch to project \"%(project_name)s\" successful."
83
-msgstr "Bascule vers le projet \"%(project_name)s\" réussie. "
84
-
85
-msgid "The authentication token issued by the Identity service has expired."
86
-msgstr ""
87
-"Le jeton d'authentification délivré par le service d'Identité a expiré."
88
-
89
-msgid "Unable to establish connection to keystone endpoint."
90
-msgstr "Impossible d'établir la connexion avec le endpoint keystone."
91
-
92
-msgid "Unable to retrieve authorized domains."
93
-msgstr "Impossible de récupérer les domaines autorisés."
94
-
95
-msgid "Unable to retrieve authorized projects."
96
-msgstr "Impossible de récupérer les projets autorisés."
97
-
98
-msgid "User Name"
99
-msgstr "Nom d'utilisateur"
100
-
101
-msgid "You are not authorized for any projects or domains."
102
-msgstr "Vous n'êtes autorisé sur aucun projet ou domaine."
103
-
104
-msgid "You are not authorized for any projects."
105
-msgstr "Vous n'êtes autorisé sur aucun projet."

+ 0
- 98
openstack_auth/locale/id/LC_MESSAGES/django.po View File

@@ -1,98 +0,0 @@
1
-# Translations template for django_openstack_auth.
2
-# Copyright (C) 2015 ORGANIZATION
3
-# This file is distributed under the same license as the
4
-# django_openstack_auth project.
5
-#
6
-# Translators:
7
-# Andreas Jaeger <jaegerandi@gmail.com>, 2016. #zanata
8
-# suhartono <cloudsuhartono@gmail.com>, 2016. #zanata
9
-# suhartono <cloudsuhartono@gmail.com>, 2017. #zanata
10
-msgid ""
11
-msgstr ""
12
-"Project-Id-Version: django_openstack_auth 3.1.2.dev15\n"
13
-"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
14
-"POT-Creation-Date: 2017-04-10 01:40+0000\n"
15
-"MIME-Version: 1.0\n"
16
-"Content-Type: text/plain; charset=UTF-8\n"
17
-"Content-Transfer-Encoding: 8bit\n"
18
-"PO-Revision-Date: 2017-04-11 03:47+0000\n"
19
-"Last-Translator: suhartono <cloudsuhartono@gmail.com>\n"
20
-"Language: id\n"
21
-"Plural-Forms: nplurals=1; plural=0;\n"
22
-"Generated-By: Babel 2.0\n"
23
-"X-Generator: Zanata 3.9.6\n"
24
-"Language-Team: Indonesian\n"
25
-
26
-msgid "An error occurred authenticating. Please try again later."
27
-msgstr "Terjadi kesalahan otentikasi. Silakan coba lagi nanti."
28
-
29
-msgid "Authenticate using"
30
-msgstr "Otentikasi penggunaan"
31
-
32
-msgid "Could not find service provider ID on Keystone."
33
-msgstr "Tidak dapat menemukan provider layanan ID di Keystone."
34
-
35
-msgid "Domain"
36
-msgstr "Domain"
37
-
38
-msgid "Invalid credentials."
39
-msgstr "Kredensial tidak valid."
40
-
41
-msgid "K2K Federation not setup for this session"
42
-msgstr "K2K Federation tidak menyiapkan untuk sesi ini"
43
-
44
-msgid ""
45
-"No authentication backend could be determined to handle the provided "
46
-"credentials."
47
-msgstr ""
48
-"Tidak ada otentikasi backend dapat ditentukan untuk menangani kredensial "
49
-"yang disediakan."
50
-
51
-msgid "Password"
52
-msgstr "Password"
53
-
54
-#, python-format
55
-msgid "Please consider changing your password, it will expire in %s minutes"
56
-msgstr ""
57
-"Silakan mempertimbangkan mengubah sandi Anda, inu akan berakhir pada %s menit"
58
-
59
-#, python-format
60
-msgid "Project switch failed for user \"%(username)s\"."
61
-msgstr "Switch proyek gagal untuk pengguna \"%(username)s\"."
62
-
63
-msgid "Region"
64
-msgstr "Region"
65
-
66
-#, python-format
67
-msgid "Service provider authentication failed. %s"
68
-msgstr "Ootentikasi provider layanan gagal. %s"
69
-
70
-#, python-format
71
-msgid "Switch to Keystone Provider \"%(keystone_provider)s\"successful."
72
-msgstr "Switch ke Keystone Provider \"%(keystone_provider)s\" berhasil."
73
-
74
-#, python-format
75
-msgid "Switch to project \"%(project_name)s\" successful."
76
-msgstr "Switch proyek \"%(project_name)s\" sukses."
77
-
78
-msgid "The authentication token issued by the Identity service has expired."
79
-msgstr ""
80
-"Token otentikasi yang dikeluarkan oleh layanan Identity telah berakhir."
81
-
82
-msgid "Unable to establish connection to keystone endpoint."
83
-msgstr "Tidak dapat melakukan koneksi ke endpoint keystone."
84
-
85
-msgid "Unable to retrieve authorized domains."
86
-msgstr "Tidak dapat mengambil domain yang berwenang."
87
-
88
-msgid "Unable to retrieve authorized projects."
89
-msgstr "Tidak dapat mengambil proyek yang berwenang (authorized)"
90
-
91
-msgid "User Name"
92
-msgstr "nama pengguna"
93
-
94
-msgid "You are not authorized for any projects or domains."
95
-msgstr "Anda tidak berwenang untuk setiap proyek atau domain."
96
-
97
-msgid "You are not authorized for any projects."
98
-msgstr "Anda tidak berwenang untuk setiap proyek."

+ 0
- 76
openstack_auth/locale/it/LC_MESSAGES/django.po View File

@@ -1,76 +0,0 @@
1
-# Translations template for django_openstack_auth.
2
-# Copyright (C) 2015 ORGANIZATION
3
-# This file is distributed under the same license as the
4
-# django_openstack_auth project.
5
-#
6
-# Translators:
7
-# Salvatore Davide Rapisarda <sdrapisarda@gmail.com>, 2014
8
-# Andreas Jaeger <jaegerandi@gmail.com>, 2016. #zanata
9
-msgid ""
10
-msgstr ""
11
-"Project-Id-Version: django_openstack_auth 3.1.1.dev1\n"
12
-"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
13
-"POT-Creation-Date: 2017-01-25 19:41+0000\n"
14
-"MIME-Version: 1.0\n"
15
-"Content-Type: text/plain; charset=UTF-8\n"
16
-"Content-Transfer-Encoding: 8bit\n"
17
-"PO-Revision-Date: 2016-03-26 09:13+0000\n"
18
-"Last-Translator: Remo Mattei <remo@rm.ht>\n"
19
-"Language: it\n"
20
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
21
-"Generated-By: Babel 2.0\n"
22
-"X-Generator: Zanata 3.7.3\n"
23
-"Language-Team: Italian\n"
24
-
25
-msgid "An error occurred authenticating. Please try again later."
26
-msgstr "Si è verificato un errore. Riprova più tardi."
27
-
28
-msgid "Authenticate using"
29
-msgstr "Usando l'autenticazione "
30
-
31
-msgid "Domain"
32
-msgstr "Dominio"
33
-
34
-msgid "Invalid credentials."
35
-msgstr "Le credenziali non sono valide "
36
-
37
-msgid ""
38
-"No authentication backend could be determined to handle the provided "
39
-"credentials."
40
-msgstr ""
41
-"Non è possibile comunicare con nessuno dei back-end di autenticazione  per "
42
-"verificare le credenziali.  "
43
-
44
-msgid "Password"
45
-msgstr "Password"
46
-
47
-#, python-format
48
-msgid "Project switch failed for user \"%(username)s\"."
49
-msgstr ""
50
-"Il passaggio al progetto non è riuscito per l'utente \"%(username)s\". "
51
-
52
-msgid "Region"
53
-msgstr "Regione"
54
-
55
-#, python-format
56
-msgid "Switch to project \"%(project_name)s\" successful."
57
-msgstr ""
58
-"Il passaggio al progetto \"%(project_name)s\" è riuscito con successo. "
59
-
60
-msgid "The authentication token issued by the Identity service has expired."
61
-msgstr "Il token di autenticazione che stai usando è scaduto."
62
-
63
-msgid "Unable to establish connection to keystone endpoint."
64
-msgstr "Impossibile stabilire una connessione con gli endpoint di keystone. "
65
-
66
-msgid "Unable to retrieve authorized projects."
67
-msgstr "Impossibile ottenere l'accesso ai progetti."
68
-
69
-msgid "User Name"
70
-msgstr "Nome Utente"
71
-
72
-msgid "You are not authorized for any projects or domains."
73
-msgstr "Non sei autorizzato ad entrare a nessuno dei progetti o domini. "
74
-
75
-msgid "You are not authorized for any projects."
76
-msgstr "Non sei abilitato a nessun progetto."

+ 0
- 101
openstack_auth/locale/ja/LC_MESSAGES/django.po View File

@@ -1,101 +0,0 @@
1
-# Translations template for django_openstack_auth.
2
-# Copyright (C) 2015 ORGANIZATION
3
-# This file is distributed under the same license as the
4
-# django_openstack_auth project.
5
-#
6
-# Translators:
7
-# Akihiro Motoki <amotoki@gmail.com>, 2015
8
-# Shu Muto <shu-mutou@rf.jp.nec.com>, 2015
9
-# ykatabam <ykatabam@redhat.com>, 2015
10
-# ykatabam <ykatabam@redhat.com>, 2015
11
-# Mie Yamamoto <myamamot@redhat.com>, 2016. #zanata
12
-# Yuko Katabami <yukokatabami@gmail.com>, 2016. #zanata
13
-# Yuko Katabami <yukokatabami@gmail.com>, 2017. #zanata
14
-msgid ""
15
-msgstr ""
16
-"Project-Id-Version: django_openstack_auth 3.5.1.dev5\n"
17
-"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
18
-"POT-Creation-Date: 2017-07-27 23:17+0000\n"
19
-"MIME-Version: 1.0\n"
20
-"Content-Type: text/plain; charset=UTF-8\n"
21
-"Content-Transfer-Encoding: 8bit\n"
22
-"PO-Revision-Date: 2017-08-07 09:39+0000\n"
23
-"Last-Translator: Yuko Katabami <yukokatabami@gmail.com>\n"
24
-"Language: ja\n"
25
-"Plural-Forms: nplurals=1; plural=0;\n"
26
-"Generated-By: Babel 2.0\n"
27
-"X-Generator: Zanata 3.9.6\n"
28
-"Language-Team: Japanese\n"
29
-
30
-msgid "An error occurred authenticating. Please try again later."
31
-msgstr "認証中にエラーが発生しました。後ほどもう一度お試しください。"
32
-
33
-msgid "Authenticate using"
34
-msgstr "使用する認証方法"
35
-
36
-msgid "Could not find service provider ID on Keystone."
37
-msgstr "Keystone でサービスプロバイダー ID を見つけることができませんでした。"
38
-
39
-msgid "Domain"
40
-msgstr "ドメイン"
41
-
42
-msgid "Invalid credentials."
43
-msgstr "無効な認証情報です。"
44
-
45
-msgid "K2K Federation not setup for this session"
46
-msgstr "このセッションには K2K フェデレーションは設定されていません。"
47
-
48
-msgid ""
49
-"No authentication backend could be determined to handle the provided "
50
-"credentials."
51
-msgstr "指定された認証情報を処理する認証バックエンドが決定できませんでした。"
52
-
53
-msgid "Password"
54
-msgstr "パスワード"
55
-
56
-#, python-format
57
-msgid "Please consider changing your password, it will expire in %s minutes"
58
-msgstr ""
59
-"パスワードの変更をお勧めします。今のパスワードはあと %s 分で無効になります。"
60
-
61
-#, python-format
62
-msgid "Project switch failed for user \"%(username)s\"."
63
-msgstr "ユーザー \"%(username)s\" のプロジェクト切り替えに失敗しました。"
64
-
65
-msgid "Region"
66
-msgstr "リージョン"
67
-
68
-#, python-format
69
-msgid "Service provider authentication failed. %s"
70
-msgstr "サービスプロバイダーの認証に失敗しました。%s"
71
-
72
-#, python-format
73
-msgid "Switch to Keystone Provider \"%(keystone_provider)s\"successful."
74
-msgstr ""
75
-"Keystone プロバイダー \"%(keystone_provider)s\" への切り替えが正常に完了しま"
76
-"した。"
77
-
78
-#, python-format
79
-msgid "Switch to project \"%(project_name)s\" successful."
80
-msgstr "プロジェクト \"%(project_name)s\" へ正常に切り替えました。"
81
-
82
-msgid "The authentication token issued by the Identity service has expired."
83
-msgstr "Identity サービスにより発行された認証トークンの期限が切れました。"
84
-
85
-msgid "Unable to establish connection to keystone endpoint."
86
-msgstr "Keystone エンドポイントへの接続を確立できません。"
87
-
88
-msgid "Unable to retrieve authorized domains."
89
-msgstr "認証されたドメインを取得できません。"
90
-
91
-msgid "Unable to retrieve authorized projects."
92
-msgstr "権限を持っているプロジェクトの情報を取得できません。"
93
-
94
-msgid "User Name"
95
-msgstr "ユーザー名"
96
-
97
-msgid "You are not authorized for any projects or domains."
98
-msgstr "どのプロジェクトやドメインに対しても権限がありません。"
99
-
100
-msgid "You are not authorized for any projects."
101
-msgstr "どのプロジェクトに対しても権限がありません。"