Преглед изворни кода

HUE-1882 [core] OAuth support for Facebook, Twitter, Google+ and Linkedin

William Bourque пре 11 година
родитељ
комит
c420eab898
22 измењених фајлова са 2024 додато и 5 уклоњено
  1. 7 0
      apps/oozie/src/oozie/templates/editor/create_coordinator.mako
  2. 2 1
      desktop/Makefile
  3. 57 2
      desktop/conf.dist/hue.ini
  4. 58 2
      desktop/conf/pseudo-distributed.ini.tmpl
  5. 2 0
      desktop/core/src/desktop/auth/backend.py
  6. 7 0
      desktop/core/src/desktop/settings.py
  7. 5 0
      desktop/core/src/desktop/urls.py
  8. 17 0
      desktop/libs/liboauth/src/liboauth/__init__.py
  9. 196 0
      desktop/libs/liboauth/src/liboauth/locale/de/LC_MESSAGES/django.po
  10. 158 0
      desktop/libs/liboauth/src/liboauth/locale/en/LC_MESSAGES/django.po
  11. 143 0
      desktop/libs/liboauth/src/liboauth/locale/en_US.pot
  12. 196 0
      desktop/libs/liboauth/src/liboauth/locale/es/LC_MESSAGES/django.po
  13. 196 0
      desktop/libs/liboauth/src/liboauth/locale/fr/LC_MESSAGES/django.po
  14. 196 0
      desktop/libs/liboauth/src/liboauth/locale/ja/LC_MESSAGES/django.po
  15. 196 0
      desktop/libs/liboauth/src/liboauth/locale/ko/LC_MESSAGES/django.po
  16. 196 0
      desktop/libs/liboauth/src/liboauth/locale/pt/LC_MESSAGES/django.po
  17. 196 0
      desktop/libs/liboauth/src/liboauth/locale/pt_BR/LC_MESSAGES/django.po
  18. 196 0
      desktop/libs/liboauth/src/liboauth/locale/zh_CN/LC_MESSAGES/django.po
  19. BIN
      desktop/libs/liboauth/src/liboauth/static/art/icon-fb.png
  20. BIN
      desktop/libs/liboauth/src/liboauth/static/art/icon-gplus.png
  21. BIN
      desktop/libs/liboauth/src/liboauth/static/art/icon-linkedin.png
  22. BIN
      desktop/libs/liboauth/src/liboauth/static/art/icon-twitter.png

+ 7 - 0
apps/oozie/src/oozie/templates/editor/create_coordinator.mako

@@ -85,6 +85,13 @@ ${ layout.menubar(section='coordinators') }
 
           <div id="step2" class="stepDetails hide">
             <div class="alert alert-info"><h3>${ _('Frequency') }</h3></div>
+            <div class="fieldWrapper">
+              <div class="row-fluid">
+                <div class="alert alert-warning">
+                  ${ _('UTC time only. (e.g. if you want 10pm PST (UTC+8) set it 8 hours later to 6am the next day.') }
+                </div>
+              </div>
+            </div>
             <div class="fieldWrapper">
               % if enable_cron_scheduling:
                 ${ coordinator_utils.frequency_fields() }

+ 2 - 1
desktop/Makefile

@@ -44,7 +44,8 @@ APPS := core \
 	libs/liboozie \
 	libs/libsaml \
 	libs/librdbms \
-        libs/libopenid
+	libs/libopenid \
+	libs/liboauth
 
 .PHONY: default
 default:: hue syncdb

+ 57 - 2
desktop/conf.dist/hue.ini

@@ -99,11 +99,13 @@
     # - desktop.auth.backend.PamBackend
     # - desktop.auth.backend.SpnegoDjangoBackend
     # - desktop.auth.backend.RemoteUserDjangoBackend
-    # - desktop.auth.backend.OAuthBackend
     # - libsaml.backend.SAML2Backend
     # - libopenid.backend.OpenIDBackend
+    # - liboauth.backend.OAuthBackend
+    #     (Support Twitter, Facebook, Google+ and Linkedin
     ## backend=desktop.auth.backend.AllowFirstUserDjangoBackend
 
+    # The service to use when querying PAM.
     ## pam_service=login
 
     # When using the desktop.auth.backend.RemoteUserDjangoBackend, this sets
@@ -245,7 +247,7 @@
     ## kinit_path=/path/to/kinit
 
 
-  # Configuration options for using OAuthBackend login
+  # Configuration options for using OAuthBackend (core) login
   # ------------------------------------------------------------------------
   [[oauth]]
     # The Consumer key of the application
@@ -331,6 +333,59 @@
   ## use_email_for_username=true
 
 
+###########################################################################
+# Settings to configure OAuth
+###########################################################################
+
+[liboauth]
+  # NOTE: 
+  # To work, each of the active (i.e. uncommented) service must have 
+  # applications created on the social network.
+  # Then the "consumer key" and "consumer secret" must be provided here.
+  #
+  # The addresses where to do so are:
+  # Twitter:  https://dev.twitter.com/apps
+  # Google+ : https://cloud.google.com/
+  # Facebook: https://developers.facebook.com/apps
+  # Linkedin: https://www.linkedin.com/secure/developer
+  #
+  # Additionnaly, the following must be set in the application settings:
+  # Twitter:  Callback URL (aka Redirect URL) must be set to http://YOUR_HUE_IP_OR_DOMAIN_NAME/oauth/social_login/oauth_authenticated
+  # Google+ : CONSENT SCREEN must have email address
+  # Facebook: Sandbox Mode must be DISABLED
+  # Linkedin: "In OAuth User Agreement", r_emailaddress is REQUIRED
+  
+  # The Consumer key of the application
+  ## consumer_key_twitter=              
+  ## consumer_key_google=               
+  ## consumer_key_facebook=             
+  ## consumer_key_linkedin=
+
+  # The Consumer secret of the application
+  ## consumer_secret_twitter=           
+  ## consumer_secret_google=            
+  ## consumer_secret_facebook=          
+  ## consumer_secret_linkedin=
+
+  # The Request token URL
+  ## request_token_url_twitter=https://api.twitter.com/oauth/request_token
+  ## request_token_url_google=https://accounts.google.com/o/oauth2/auth
+  ## request_token_url_linkedin=https://www.linkedin.com/uas/oauth2/authorization
+  ## request_token_url_facebook=https://graph.facebook.com/oauth/authorize
+
+  # The Access token URL
+  ## access_token_url_twitter=https://api.twitter.com/oauth/access_token?oauth_verifier=
+  ## access_token_url_google=https://accounts.google.com/o/oauth2/token
+  ## access_token_url_facebook=https://graph.facebook.com/oauth/access_token
+  ## access_token_url_linkedin=https://api.linkedin.com/uas/oauth2/accessToken
+
+  # The Authenticate URL
+  ## authenticate_url_twitter=https://api.twitter.com/oauth/authenticate
+  ## authenticate_url_google=https://www.googleapis.com/oauth2/v1/userinfo?access_token=
+  ## authenticate_url_facebook=https://graph.facebook.com/me?access_token=
+  ## authenticate_url_linkedin=https://api.linkedin.com/v1/people/~:(email-address)?format=json&oauth2_access_token=
+
+
 ###########################################################################
 # Settings for the RDBMS application
 ###########################################################################

+ 58 - 2
desktop/conf/pseudo-distributed.ini.tmpl

@@ -108,10 +108,13 @@
     # - desktop.auth.backend.PamBackend
     # - desktop.auth.backend.SpnegoDjangoBackend
     # - desktop.auth.backend.RemoteUserDjangoBackend
-    # - desktop.auth.backend.OAuthBackend
     # - libsaml.backend.SAML2Backend
+    # - libopenid.backend.OpenIDBackend
+    # - liboauth.backend.OAuthBackend
+    #     (New oauth, support Twitter, Facebook, Google+ and Linkedin
     ## backend=desktop.auth.backend.AllowFirstUserDjangoBackend
 
+    # The service to use when querying PAM.
     ## pam_service=login
 
     # When using the desktop.auth.backend.RemoteUserDjangoBackend, this sets
@@ -250,7 +253,7 @@
     ## kinit_path=/path/to/kinit
 
 
-  # Configuration options for using OAuthBackend login
+  # Configuration options for using OAuthBackend (Core) login
   # ------------------------------------------------------------------------
   [[oauth]]
     # The Consumer key of the application
@@ -336,6 +339,59 @@
   ## use_email_for_username=true
 
 
+###########################################################################
+# Settings to configure OAuth
+###########################################################################
+
+[liboauth]
+  # NOTE:
+  # To work, each of the active (i.e. uncommented) service must have
+  # applications created on the social network.
+  # Then the "consumer key" and "consumer secret" must be provided here.
+  #
+  # The addresses where to do so are:
+  # Twitter:  https://dev.twitter.com/apps
+  # Google+ : https://cloud.google.com/
+  # Facebook: https://developers.facebook.com/apps
+  # Linkedin: https://www.linkedin.com/secure/developer
+  #
+  # Additionnaly, the following must be set in the application settings:
+  # Twitter:  Callback URL (aka Redirect URL) must be set to http://YOUR_HUE_IP_OR_DOMAIN_NAME/oauth/social_login/oauth_authenticated
+  # Google+ : CONSENT SCREEN must have email address
+  # Facebook: Sandbox Mode must be DISABLED
+  # Linkedin: "In OAuth User Agreement", r_emailaddress is REQUIRED
+
+  # The Consumer key of the application
+  ## consumer_key_twitter=
+  ## consumer_key_google=
+  ## consumer_key_facebook=
+  ## consumer_key_linkedin=
+
+  # The Consumer secret of the application
+  ## consumer_secret_twitter=
+  ## consumer_secret_google=
+  ## consumer_secret_facebook=
+  ## consumer_secret_linkedin=
+
+  # The Request token URL
+  ## request_token_url_twitter=https://api.twitter.com/oauth/request_token
+  ## request_token_url_google=https://accounts.google.com/o/oauth2/auth
+  ## request_token_url_linkedin=https://www.linkedin.com/uas/oauth2/authorization
+  ## request_token_url_facebook=https://graph.facebook.com/oauth/authorize
+
+  # The Access token URL
+  ## access_token_url_twitter=https://api.twitter.com/oauth/access_token?oauth_verifier=
+  ## access_token_url_google=https://accounts.google.com/o/oauth2/token
+  ## access_token_url_facebook=https://graph.facebook.com/oauth/access_token
+  ## access_token_url_linkedin=https://api.linkedin.com/uas/oauth2/accessToken
+
+  # The Authenticate URL
+  ## authenticate_url_twitter=https://api.twitter.com/oauth/authenticate
+  ## authenticate_url_google=https://www.googleapis.com/oauth2/v1/userinfo?access_token=
+  ## authenticate_url_facebook=https://graph.facebook.com/me?access_token=
+  ## authenticate_url_linkedin=https://api.linkedin.com/v1/people/~:(email-address)?format=json&oauth2_access_token=
+
+
 ###########################################################################
 # Settings for the RDBMS application
 ###########################################################################

+ 2 - 0
desktop/core/src/desktop/auth/backend.py

@@ -181,6 +181,8 @@ class AllowFirstUserDjangoBackend(django.contrib.auth.backends.ModelBackend):
 
 class OAuthBackend(DesktopBackendBase):
   """
+  Deprecated, use liboauth.backend.OAuthBackend instead
+
   Heavily based on Twitter Oauth: https://github.com/simplegeo/python-oauth2#logging-into-django-w-twitter
   Requires: python-oauth2 and httplib2
 

+ 7 - 0
desktop/core/src/desktop/settings.py

@@ -324,6 +324,13 @@ if OPENID_AUTHENTICATION:
   LOGIN_URL = '/openid/login'
   SESSION_EXPIRE_AT_BROWSER_CLOSE = True
 
+# OAuth
+OAUTH_AUTHENTICATION='liboauth.backend.OAuthBackend' in AUTHENTICATION_BACKENDS
+if OAUTH_AUTHENTICATION:
+    INSTALLED_APPS.append('liboauth')
+    LOGIN_URL = '/oauth/accounts/login'
+    SESSION_EXPIRE_AT_BROWSER_CLOSE = True
+
 # URL Redirection white list.
 if desktop.conf.REDIRECT_WHITELIST.get():
   MIDDLEWARE_CLASSES.append('desktop.middleware.EnsureSafeRedirectURLMiddleware')

+ 5 - 0
desktop/core/src/desktop/urls.py

@@ -106,6 +106,11 @@ if settings.SAML_AUTHENTICATION:
 if settings.OPENID_AUTHENTICATION:
     static_patterns.append((r'^openid/', include('libopenid.urls')))
 
+if settings.OAUTH_AUTHENTICATION:
+  static_patterns.append((r'^oauth/', include('liboauth.urls')))
+  static_patterns.append(static_pattern("liboauth_static",
+        os.path.join(os.path.dirname(__file__), "..", '..', '..', "libs/liboauth/src/liboauth/static/")))
+
 # Root each app at /appname if they have a "urls" module
 for app in appmanager.DESKTOP_APPS:
   if app.urls:

+ 17 - 0
desktop/libs/liboauth/src/liboauth/__init__.py

@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+# Licensed to Cloudera, Inc. under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  Cloudera, Inc. licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+

+ 196 - 0
desktop/libs/liboauth/src/liboauth/locale/de/LC_MESSAGES/django.po

@@ -0,0 +1,196 @@
+# German translations for Hue.
+# Copyright (C) 2012 Cloudera, Inc
+# This file is distributed under the same license as the Hue project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hue VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2014-01-30 13:18-0800\n"
+"PO-Revision-Date: 2012-11-07 13:08-0800\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: de <LL@li.org>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+
+#: src/liboauth/backend.py:101 src/liboauth/backend.py:146
+#: src/liboauth/backend.py:154 src/liboauth/backend.py:163
+#: src/liboauth/backend.py:172 src/liboauth/backend.py:247
+#, python-format
+msgid "Invalid response from OAuth provider: %s"
+msgstr ""
+
+#: src/liboauth/conf.py:26
+msgid "The Consumer key of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:32
+msgid "The Consumer key of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:38
+msgid "The Consumer key of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:44
+msgid "The Consumer key of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:51
+msgid "The Consumer secret of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:57
+msgid "The Consumer secret of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:63
+msgid "The Consumer secret of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:69
+msgid "The Consumer secret of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:77
+msgid "The Twitter Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:83
+msgid "The Google Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:89
+msgid "The Facebook Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:95
+msgid "The Linkedin Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:102
+msgid "The Twitter Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:108
+msgid "The Google Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:114
+msgid "The Facebook Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:120
+msgid "The Linkedin Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:128
+msgid "The Twitter Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:134
+msgid "The Google Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:140
+msgid "The Facebook Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:146
+msgid "The Linkedin Authorize URL."
+msgstr ""
+
+#: src/liboauth/views.py:72
+#, python-format
+msgid "Invalid request: %s"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:25
+msgid "Hue - Sign up"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:27
+msgid "Hue - Sign in"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Visit gethue.com"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Fell asleep? Visit us on gethue.com instead!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Error!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Invalid username or password."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:176
+msgid "This is your first time logging in."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:177
+msgid "You will become Hue superuser."
+msgstr ""
+
+#~ msgid ""
+#~ "Xmlsec1 binary path. This program should"
+#~ " be executable by the user running"
+#~ " Hue."
+#~ msgstr ""
+
+#~ msgid "Create users from IdP on login."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Attribute map directory contains files "
+#~ "that map SAML attributes to pysaml2 "
+#~ "attributes."
+#~ msgstr ""
+
+#~ msgid "Allow responses that are initiated by the IdP."
+#~ msgstr ""
+
+#~ msgid "Required attributes to ask for from IdP."
+#~ msgstr ""
+
+#~ msgid "Optional attributes to ask for from IdP."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "IdP metadata in the form of a "
+#~ "file. This is generally an XML "
+#~ "file containing metadata that the "
+#~ "Identity Provider generates."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "key_file is the name of a PEM "
+#~ "formatted file that contains the private"
+#~ " key of the Hue service. This "
+#~ "is presently used both to encrypt/sign"
+#~ " assertions and as client key in "
+#~ "a HTTPS session."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "This is the public part of the "
+#~ "service private/public key pair. cert_file "
+#~ "must be a PEM formatted certificate "
+#~ "chain file."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "A mapping from attributes in the "
+#~ "response from the IdP to django "
+#~ "user attributes."
+#~ msgstr ""
+

+ 158 - 0
desktop/libs/liboauth/src/liboauth/locale/en/LC_MESSAGES/django.po

@@ -0,0 +1,158 @@
+# English translations for Hue.
+# Copyright (C) 2014 Cloudera, Inc
+# This file is distributed under the same license as the Hue project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hue VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2014-01-30 13:18-0800\n"
+"PO-Revision-Date: 2014-01-03 20:09+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: en <LL@li.org>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+
+#: src/liboauth/backend.py:101 src/liboauth/backend.py:146
+#: src/liboauth/backend.py:154 src/liboauth/backend.py:163
+#: src/liboauth/backend.py:172 src/liboauth/backend.py:247
+#, python-format
+msgid "Invalid response from OAuth provider: %s"
+msgstr ""
+
+#: src/liboauth/conf.py:26
+msgid "The Consumer key of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:32
+msgid "The Consumer key of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:38
+msgid "The Consumer key of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:44
+msgid "The Consumer key of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:51
+msgid "The Consumer secret of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:57
+msgid "The Consumer secret of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:63
+msgid "The Consumer secret of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:69
+msgid "The Consumer secret of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:77
+msgid "The Twitter Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:83
+msgid "The Google Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:89
+msgid "The Facebook Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:95
+msgid "The Linkedin Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:102
+msgid "The Twitter Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:108
+msgid "The Google Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:114
+msgid "The Facebook Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:120
+msgid "The Linkedin Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:128
+msgid "The Twitter Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:134
+msgid "The Google Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:140
+msgid "The Facebook Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:146
+msgid "The Linkedin Authorize URL."
+msgstr ""
+
+#: src/liboauth/views.py:72
+#, python-format
+msgid "Invalid request: %s"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:25
+msgid "Hue - Sign up"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:27
+msgid "Hue - Sign in"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Visit gethue.com"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Fell asleep? Visit us on gethue.com instead!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Error!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Invalid username or password."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:176
+msgid "This is your first time logging in."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:177
+msgid "You will become Hue superuser."
+msgstr ""
+
+#~ msgid "OpenId SSO endpoint url"
+#~ msgstr ""
+
+#~ msgid "Openid identity url prefix"
+#~ msgstr ""
+
+#~ msgid "Create users from IdP on login."
+#~ msgstr ""
+
+#~ msgid "Use email for username."
+#~ msgstr ""
+
+#~ msgid "Required OPENID SSO endpoint URL is not provided."
+#~ msgstr ""
+

+ 143 - 0
desktop/libs/liboauth/src/liboauth/locale/en_US.pot

@@ -0,0 +1,143 @@
+# Translations template for Hue.
+# Copyright (C) 2014 Cloudera, Inc
+# This file is distributed under the same license as the Hue project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Hue VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2014-01-30 13:18-0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+
+#: src/liboauth/backend.py:101 src/liboauth/backend.py:146
+#: src/liboauth/backend.py:154 src/liboauth/backend.py:163
+#: src/liboauth/backend.py:172 src/liboauth/backend.py:247
+#, python-format
+msgid "Invalid response from OAuth provider: %s"
+msgstr ""
+
+#: src/liboauth/conf.py:26
+msgid "The Consumer key of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:32
+msgid "The Consumer key of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:38
+msgid "The Consumer key of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:44
+msgid "The Consumer key of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:51
+msgid "The Consumer secret of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:57
+msgid "The Consumer secret of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:63
+msgid "The Consumer secret of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:69
+msgid "The Consumer secret of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:77
+msgid "The Twitter Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:83
+msgid "The Google Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:89
+msgid "The Facebook Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:95
+msgid "The Linkedin Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:102
+msgid "The Twitter Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:108
+msgid "The Google Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:114
+msgid "The Facebook Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:120
+msgid "The Linkedin Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:128
+msgid "The Twitter Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:134
+msgid "The Google Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:140
+msgid "The Facebook Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:146
+msgid "The Linkedin Authorize URL."
+msgstr ""
+
+#: src/liboauth/views.py:72
+#, python-format
+msgid "Invalid request: %s"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:25
+msgid "Hue - Sign up"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:27
+msgid "Hue - Sign in"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Visit gethue.com"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Fell asleep? Visit us on gethue.com instead!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Error!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Invalid username or password."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:176
+msgid "This is your first time logging in."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:177
+msgid "You will become Hue superuser."
+msgstr ""
+

+ 196 - 0
desktop/libs/liboauth/src/liboauth/locale/es/LC_MESSAGES/django.po

@@ -0,0 +1,196 @@
+# Spanish translations for Hue.
+# Copyright (C) 2012 Cloudera, Inc
+# This file is distributed under the same license as the Hue project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hue VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2014-01-30 13:18-0800\n"
+"PO-Revision-Date: 2012-11-07 13:08-0800\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: es <LL@li.org>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+
+#: src/liboauth/backend.py:101 src/liboauth/backend.py:146
+#: src/liboauth/backend.py:154 src/liboauth/backend.py:163
+#: src/liboauth/backend.py:172 src/liboauth/backend.py:247
+#, python-format
+msgid "Invalid response from OAuth provider: %s"
+msgstr ""
+
+#: src/liboauth/conf.py:26
+msgid "The Consumer key of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:32
+msgid "The Consumer key of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:38
+msgid "The Consumer key of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:44
+msgid "The Consumer key of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:51
+msgid "The Consumer secret of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:57
+msgid "The Consumer secret of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:63
+msgid "The Consumer secret of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:69
+msgid "The Consumer secret of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:77
+msgid "The Twitter Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:83
+msgid "The Google Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:89
+msgid "The Facebook Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:95
+msgid "The Linkedin Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:102
+msgid "The Twitter Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:108
+msgid "The Google Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:114
+msgid "The Facebook Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:120
+msgid "The Linkedin Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:128
+msgid "The Twitter Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:134
+msgid "The Google Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:140
+msgid "The Facebook Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:146
+msgid "The Linkedin Authorize URL."
+msgstr ""
+
+#: src/liboauth/views.py:72
+#, python-format
+msgid "Invalid request: %s"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:25
+msgid "Hue - Sign up"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:27
+msgid "Hue - Sign in"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Visit gethue.com"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Fell asleep? Visit us on gethue.com instead!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Error!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Invalid username or password."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:176
+msgid "This is your first time logging in."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:177
+msgid "You will become Hue superuser."
+msgstr ""
+
+#~ msgid ""
+#~ "Xmlsec1 binary path. This program should"
+#~ " be executable by the user running"
+#~ " Hue."
+#~ msgstr ""
+
+#~ msgid "Create users from IdP on login."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Attribute map directory contains files "
+#~ "that map SAML attributes to pysaml2 "
+#~ "attributes."
+#~ msgstr ""
+
+#~ msgid "Allow responses that are initiated by the IdP."
+#~ msgstr ""
+
+#~ msgid "Required attributes to ask for from IdP."
+#~ msgstr ""
+
+#~ msgid "Optional attributes to ask for from IdP."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "IdP metadata in the form of a "
+#~ "file. This is generally an XML "
+#~ "file containing metadata that the "
+#~ "Identity Provider generates."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "key_file is the name of a PEM "
+#~ "formatted file that contains the private"
+#~ " key of the Hue service. This "
+#~ "is presently used both to encrypt/sign"
+#~ " assertions and as client key in "
+#~ "a HTTPS session."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "This is the public part of the "
+#~ "service private/public key pair. cert_file "
+#~ "must be a PEM formatted certificate "
+#~ "chain file."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "A mapping from attributes in the "
+#~ "response from the IdP to django "
+#~ "user attributes."
+#~ msgstr ""
+

+ 196 - 0
desktop/libs/liboauth/src/liboauth/locale/fr/LC_MESSAGES/django.po

@@ -0,0 +1,196 @@
+# French translations for Hue.
+# Copyright (C) 2012 Cloudera, Inc
+# This file is distributed under the same license as the Hue project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hue VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2014-01-30 13:18-0800\n"
+"PO-Revision-Date: 2012-11-07 13:08-0800\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: fr <LL@li.org>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+
+#: src/liboauth/backend.py:101 src/liboauth/backend.py:146
+#: src/liboauth/backend.py:154 src/liboauth/backend.py:163
+#: src/liboauth/backend.py:172 src/liboauth/backend.py:247
+#, python-format
+msgid "Invalid response from OAuth provider: %s"
+msgstr ""
+
+#: src/liboauth/conf.py:26
+msgid "The Consumer key of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:32
+msgid "The Consumer key of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:38
+msgid "The Consumer key of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:44
+msgid "The Consumer key of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:51
+msgid "The Consumer secret of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:57
+msgid "The Consumer secret of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:63
+msgid "The Consumer secret of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:69
+msgid "The Consumer secret of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:77
+msgid "The Twitter Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:83
+msgid "The Google Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:89
+msgid "The Facebook Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:95
+msgid "The Linkedin Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:102
+msgid "The Twitter Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:108
+msgid "The Google Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:114
+msgid "The Facebook Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:120
+msgid "The Linkedin Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:128
+msgid "The Twitter Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:134
+msgid "The Google Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:140
+msgid "The Facebook Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:146
+msgid "The Linkedin Authorize URL."
+msgstr ""
+
+#: src/liboauth/views.py:72
+#, python-format
+msgid "Invalid request: %s"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:25
+msgid "Hue - Sign up"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:27
+msgid "Hue - Sign in"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Visit gethue.com"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Fell asleep? Visit us on gethue.com instead!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Error!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Invalid username or password."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:176
+msgid "This is your first time logging in."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:177
+msgid "You will become Hue superuser."
+msgstr ""
+
+#~ msgid ""
+#~ "Xmlsec1 binary path. This program should"
+#~ " be executable by the user running"
+#~ " Hue."
+#~ msgstr ""
+
+#~ msgid "Create users from IdP on login."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Attribute map directory contains files "
+#~ "that map SAML attributes to pysaml2 "
+#~ "attributes."
+#~ msgstr ""
+
+#~ msgid "Allow responses that are initiated by the IdP."
+#~ msgstr ""
+
+#~ msgid "Required attributes to ask for from IdP."
+#~ msgstr ""
+
+#~ msgid "Optional attributes to ask for from IdP."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "IdP metadata in the form of a "
+#~ "file. This is generally an XML "
+#~ "file containing metadata that the "
+#~ "Identity Provider generates."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "key_file is the name of a PEM "
+#~ "formatted file that contains the private"
+#~ " key of the Hue service. This "
+#~ "is presently used both to encrypt/sign"
+#~ " assertions and as client key in "
+#~ "a HTTPS session."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "This is the public part of the "
+#~ "service private/public key pair. cert_file "
+#~ "must be a PEM formatted certificate "
+#~ "chain file."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "A mapping from attributes in the "
+#~ "response from the IdP to django "
+#~ "user attributes."
+#~ msgstr ""
+

+ 196 - 0
desktop/libs/liboauth/src/liboauth/locale/ja/LC_MESSAGES/django.po

@@ -0,0 +1,196 @@
+# Japanese translations for Hue.
+# Copyright (C) 2012 Cloudera, Inc
+# This file is distributed under the same license as the Hue project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hue VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2014-01-30 13:18-0800\n"
+"PO-Revision-Date: 2012-11-07 13:08-0800\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: ja <LL@li.org>\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+
+#: src/liboauth/backend.py:101 src/liboauth/backend.py:146
+#: src/liboauth/backend.py:154 src/liboauth/backend.py:163
+#: src/liboauth/backend.py:172 src/liboauth/backend.py:247
+#, python-format
+msgid "Invalid response from OAuth provider: %s"
+msgstr ""
+
+#: src/liboauth/conf.py:26
+msgid "The Consumer key of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:32
+msgid "The Consumer key of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:38
+msgid "The Consumer key of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:44
+msgid "The Consumer key of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:51
+msgid "The Consumer secret of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:57
+msgid "The Consumer secret of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:63
+msgid "The Consumer secret of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:69
+msgid "The Consumer secret of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:77
+msgid "The Twitter Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:83
+msgid "The Google Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:89
+msgid "The Facebook Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:95
+msgid "The Linkedin Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:102
+msgid "The Twitter Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:108
+msgid "The Google Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:114
+msgid "The Facebook Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:120
+msgid "The Linkedin Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:128
+msgid "The Twitter Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:134
+msgid "The Google Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:140
+msgid "The Facebook Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:146
+msgid "The Linkedin Authorize URL."
+msgstr ""
+
+#: src/liboauth/views.py:72
+#, python-format
+msgid "Invalid request: %s"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:25
+msgid "Hue - Sign up"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:27
+msgid "Hue - Sign in"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Visit gethue.com"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Fell asleep? Visit us on gethue.com instead!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Error!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Invalid username or password."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:176
+msgid "This is your first time logging in."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:177
+msgid "You will become Hue superuser."
+msgstr ""
+
+#~ msgid ""
+#~ "Xmlsec1 binary path. This program should"
+#~ " be executable by the user running"
+#~ " Hue."
+#~ msgstr ""
+
+#~ msgid "Create users from IdP on login."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Attribute map directory contains files "
+#~ "that map SAML attributes to pysaml2 "
+#~ "attributes."
+#~ msgstr ""
+
+#~ msgid "Allow responses that are initiated by the IdP."
+#~ msgstr ""
+
+#~ msgid "Required attributes to ask for from IdP."
+#~ msgstr ""
+
+#~ msgid "Optional attributes to ask for from IdP."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "IdP metadata in the form of a "
+#~ "file. This is generally an XML "
+#~ "file containing metadata that the "
+#~ "Identity Provider generates."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "key_file is the name of a PEM "
+#~ "formatted file that contains the private"
+#~ " key of the Hue service. This "
+#~ "is presently used both to encrypt/sign"
+#~ " assertions and as client key in "
+#~ "a HTTPS session."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "This is the public part of the "
+#~ "service private/public key pair. cert_file "
+#~ "must be a PEM formatted certificate "
+#~ "chain file."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "A mapping from attributes in the "
+#~ "response from the IdP to django "
+#~ "user attributes."
+#~ msgstr ""
+

+ 196 - 0
desktop/libs/liboauth/src/liboauth/locale/ko/LC_MESSAGES/django.po

@@ -0,0 +1,196 @@
+# Korean translations for Hue.
+# Copyright (C) 2012 Cloudera, Inc
+# This file is distributed under the same license as the Hue project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hue VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2014-01-30 13:18-0800\n"
+"PO-Revision-Date: 2012-11-07 13:08-0800\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: ko <LL@li.org>\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+
+#: src/liboauth/backend.py:101 src/liboauth/backend.py:146
+#: src/liboauth/backend.py:154 src/liboauth/backend.py:163
+#: src/liboauth/backend.py:172 src/liboauth/backend.py:247
+#, python-format
+msgid "Invalid response from OAuth provider: %s"
+msgstr ""
+
+#: src/liboauth/conf.py:26
+msgid "The Consumer key of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:32
+msgid "The Consumer key of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:38
+msgid "The Consumer key of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:44
+msgid "The Consumer key of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:51
+msgid "The Consumer secret of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:57
+msgid "The Consumer secret of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:63
+msgid "The Consumer secret of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:69
+msgid "The Consumer secret of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:77
+msgid "The Twitter Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:83
+msgid "The Google Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:89
+msgid "The Facebook Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:95
+msgid "The Linkedin Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:102
+msgid "The Twitter Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:108
+msgid "The Google Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:114
+msgid "The Facebook Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:120
+msgid "The Linkedin Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:128
+msgid "The Twitter Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:134
+msgid "The Google Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:140
+msgid "The Facebook Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:146
+msgid "The Linkedin Authorize URL."
+msgstr ""
+
+#: src/liboauth/views.py:72
+#, python-format
+msgid "Invalid request: %s"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:25
+msgid "Hue - Sign up"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:27
+msgid "Hue - Sign in"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Visit gethue.com"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Fell asleep? Visit us on gethue.com instead!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Error!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Invalid username or password."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:176
+msgid "This is your first time logging in."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:177
+msgid "You will become Hue superuser."
+msgstr ""
+
+#~ msgid ""
+#~ "Xmlsec1 binary path. This program should"
+#~ " be executable by the user running"
+#~ " Hue."
+#~ msgstr ""
+
+#~ msgid "Create users from IdP on login."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Attribute map directory contains files "
+#~ "that map SAML attributes to pysaml2 "
+#~ "attributes."
+#~ msgstr ""
+
+#~ msgid "Allow responses that are initiated by the IdP."
+#~ msgstr ""
+
+#~ msgid "Required attributes to ask for from IdP."
+#~ msgstr ""
+
+#~ msgid "Optional attributes to ask for from IdP."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "IdP metadata in the form of a "
+#~ "file. This is generally an XML "
+#~ "file containing metadata that the "
+#~ "Identity Provider generates."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "key_file is the name of a PEM "
+#~ "formatted file that contains the private"
+#~ " key of the Hue service. This "
+#~ "is presently used both to encrypt/sign"
+#~ " assertions and as client key in "
+#~ "a HTTPS session."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "This is the public part of the "
+#~ "service private/public key pair. cert_file "
+#~ "must be a PEM formatted certificate "
+#~ "chain file."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "A mapping from attributes in the "
+#~ "response from the IdP to django "
+#~ "user attributes."
+#~ msgstr ""
+

+ 196 - 0
desktop/libs/liboauth/src/liboauth/locale/pt/LC_MESSAGES/django.po

@@ -0,0 +1,196 @@
+# Portuguese translations for Hue.
+# Copyright (C) 2012 Cloudera, Inc
+# This file is distributed under the same license as the Hue project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hue VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2014-01-30 13:18-0800\n"
+"PO-Revision-Date: 2012-11-07 13:08-0800\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: pt <LL@li.org>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+
+#: src/liboauth/backend.py:101 src/liboauth/backend.py:146
+#: src/liboauth/backend.py:154 src/liboauth/backend.py:163
+#: src/liboauth/backend.py:172 src/liboauth/backend.py:247
+#, python-format
+msgid "Invalid response from OAuth provider: %s"
+msgstr ""
+
+#: src/liboauth/conf.py:26
+msgid "The Consumer key of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:32
+msgid "The Consumer key of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:38
+msgid "The Consumer key of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:44
+msgid "The Consumer key of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:51
+msgid "The Consumer secret of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:57
+msgid "The Consumer secret of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:63
+msgid "The Consumer secret of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:69
+msgid "The Consumer secret of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:77
+msgid "The Twitter Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:83
+msgid "The Google Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:89
+msgid "The Facebook Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:95
+msgid "The Linkedin Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:102
+msgid "The Twitter Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:108
+msgid "The Google Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:114
+msgid "The Facebook Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:120
+msgid "The Linkedin Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:128
+msgid "The Twitter Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:134
+msgid "The Google Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:140
+msgid "The Facebook Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:146
+msgid "The Linkedin Authorize URL."
+msgstr ""
+
+#: src/liboauth/views.py:72
+#, python-format
+msgid "Invalid request: %s"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:25
+msgid "Hue - Sign up"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:27
+msgid "Hue - Sign in"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Visit gethue.com"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Fell asleep? Visit us on gethue.com instead!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Error!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Invalid username or password."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:176
+msgid "This is your first time logging in."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:177
+msgid "You will become Hue superuser."
+msgstr ""
+
+#~ msgid ""
+#~ "Xmlsec1 binary path. This program should"
+#~ " be executable by the user running"
+#~ " Hue."
+#~ msgstr ""
+
+#~ msgid "Create users from IdP on login."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Attribute map directory contains files "
+#~ "that map SAML attributes to pysaml2 "
+#~ "attributes."
+#~ msgstr ""
+
+#~ msgid "Allow responses that are initiated by the IdP."
+#~ msgstr ""
+
+#~ msgid "Required attributes to ask for from IdP."
+#~ msgstr ""
+
+#~ msgid "Optional attributes to ask for from IdP."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "IdP metadata in the form of a "
+#~ "file. This is generally an XML "
+#~ "file containing metadata that the "
+#~ "Identity Provider generates."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "key_file is the name of a PEM "
+#~ "formatted file that contains the private"
+#~ " key of the Hue service. This "
+#~ "is presently used both to encrypt/sign"
+#~ " assertions and as client key in "
+#~ "a HTTPS session."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "This is the public part of the "
+#~ "service private/public key pair. cert_file "
+#~ "must be a PEM formatted certificate "
+#~ "chain file."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "A mapping from attributes in the "
+#~ "response from the IdP to django "
+#~ "user attributes."
+#~ msgstr ""
+

+ 196 - 0
desktop/libs/liboauth/src/liboauth/locale/pt_BR/LC_MESSAGES/django.po

@@ -0,0 +1,196 @@
+# Portuguese (Brazil) translations for Hue.
+# Copyright (C) 2012 Cloudera, Inc
+# This file is distributed under the same license as the Hue project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hue VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2014-01-30 13:18-0800\n"
+"PO-Revision-Date: 2012-11-07 13:08-0800\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: pt_BR <LL@li.org>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+
+#: src/liboauth/backend.py:101 src/liboauth/backend.py:146
+#: src/liboauth/backend.py:154 src/liboauth/backend.py:163
+#: src/liboauth/backend.py:172 src/liboauth/backend.py:247
+#, python-format
+msgid "Invalid response from OAuth provider: %s"
+msgstr ""
+
+#: src/liboauth/conf.py:26
+msgid "The Consumer key of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:32
+msgid "The Consumer key of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:38
+msgid "The Consumer key of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:44
+msgid "The Consumer key of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:51
+msgid "The Consumer secret of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:57
+msgid "The Consumer secret of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:63
+msgid "The Consumer secret of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:69
+msgid "The Consumer secret of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:77
+msgid "The Twitter Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:83
+msgid "The Google Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:89
+msgid "The Facebook Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:95
+msgid "The Linkedin Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:102
+msgid "The Twitter Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:108
+msgid "The Google Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:114
+msgid "The Facebook Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:120
+msgid "The Linkedin Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:128
+msgid "The Twitter Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:134
+msgid "The Google Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:140
+msgid "The Facebook Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:146
+msgid "The Linkedin Authorize URL."
+msgstr ""
+
+#: src/liboauth/views.py:72
+#, python-format
+msgid "Invalid request: %s"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:25
+msgid "Hue - Sign up"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:27
+msgid "Hue - Sign in"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Visit gethue.com"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Fell asleep? Visit us on gethue.com instead!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Error!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Invalid username or password."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:176
+msgid "This is your first time logging in."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:177
+msgid "You will become Hue superuser."
+msgstr ""
+
+#~ msgid ""
+#~ "Xmlsec1 binary path. This program should"
+#~ " be executable by the user running"
+#~ " Hue."
+#~ msgstr ""
+
+#~ msgid "Create users from IdP on login."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Attribute map directory contains files "
+#~ "that map SAML attributes to pysaml2 "
+#~ "attributes."
+#~ msgstr ""
+
+#~ msgid "Allow responses that are initiated by the IdP."
+#~ msgstr ""
+
+#~ msgid "Required attributes to ask for from IdP."
+#~ msgstr ""
+
+#~ msgid "Optional attributes to ask for from IdP."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "IdP metadata in the form of a "
+#~ "file. This is generally an XML "
+#~ "file containing metadata that the "
+#~ "Identity Provider generates."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "key_file is the name of a PEM "
+#~ "formatted file that contains the private"
+#~ " key of the Hue service. This "
+#~ "is presently used both to encrypt/sign"
+#~ " assertions and as client key in "
+#~ "a HTTPS session."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "This is the public part of the "
+#~ "service private/public key pair. cert_file "
+#~ "must be a PEM formatted certificate "
+#~ "chain file."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "A mapping from attributes in the "
+#~ "response from the IdP to django "
+#~ "user attributes."
+#~ msgstr ""
+

+ 196 - 0
desktop/libs/liboauth/src/liboauth/locale/zh_CN/LC_MESSAGES/django.po

@@ -0,0 +1,196 @@
+# Chinese (China) translations for Hue.
+# Copyright (C) 2012 Cloudera, Inc
+# This file is distributed under the same license as the Hue project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hue VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2014-01-30 13:18-0800\n"
+"PO-Revision-Date: 2012-11-07 13:08-0800\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: zh_CN <LL@li.org>\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+
+#: src/liboauth/backend.py:101 src/liboauth/backend.py:146
+#: src/liboauth/backend.py:154 src/liboauth/backend.py:163
+#: src/liboauth/backend.py:172 src/liboauth/backend.py:247
+#, python-format
+msgid "Invalid response from OAuth provider: %s"
+msgstr ""
+
+#: src/liboauth/conf.py:26
+msgid "The Consumer key of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:32
+msgid "The Consumer key of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:38
+msgid "The Consumer key of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:44
+msgid "The Consumer key of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:51
+msgid "The Consumer secret of the twitter application."
+msgstr ""
+
+#: src/liboauth/conf.py:57
+msgid "The Consumer secret of the google application."
+msgstr ""
+
+#: src/liboauth/conf.py:63
+msgid "The Consumer secret of the facebook application."
+msgstr ""
+
+#: src/liboauth/conf.py:69
+msgid "The Consumer secret of the linkedin application."
+msgstr ""
+
+#: src/liboauth/conf.py:77
+msgid "The Twitter Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:83
+msgid "The Google Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:89
+msgid "The Facebook Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:95
+msgid "The Linkedin Request token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:102
+msgid "The Twitter Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:108
+msgid "The Google Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:114
+msgid "The Facebook Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:120
+msgid "The Linkedin Access token URL."
+msgstr ""
+
+#: src/liboauth/conf.py:128
+msgid "The Twitter Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:134
+msgid "The Google Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:140
+msgid "The Facebook Authorize URL."
+msgstr ""
+
+#: src/liboauth/conf.py:146
+msgid "The Linkedin Authorize URL."
+msgstr ""
+
+#: src/liboauth/views.py:72
+#, python-format
+msgid "Invalid request: %s"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:25
+msgid "Hue - Sign up"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:27
+msgid "Hue - Sign in"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Visit gethue.com"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:155
+msgid "Fell asleep? Visit us on gethue.com instead!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Error!"
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:169
+msgid "Invalid username or password."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:176
+msgid "This is your first time logging in."
+msgstr ""
+
+#: src/liboauth/templates/oauth-login.mako:177
+msgid "You will become Hue superuser."
+msgstr ""
+
+#~ msgid ""
+#~ "Xmlsec1 binary path. This program should"
+#~ " be executable by the user running"
+#~ " Hue."
+#~ msgstr ""
+
+#~ msgid "Create users from IdP on login."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Attribute map directory contains files "
+#~ "that map SAML attributes to pysaml2 "
+#~ "attributes."
+#~ msgstr ""
+
+#~ msgid "Allow responses that are initiated by the IdP."
+#~ msgstr ""
+
+#~ msgid "Required attributes to ask for from IdP."
+#~ msgstr ""
+
+#~ msgid "Optional attributes to ask for from IdP."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "IdP metadata in the form of a "
+#~ "file. This is generally an XML "
+#~ "file containing metadata that the "
+#~ "Identity Provider generates."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "key_file is the name of a PEM "
+#~ "formatted file that contains the private"
+#~ " key of the Hue service. This "
+#~ "is presently used both to encrypt/sign"
+#~ " assertions and as client key in "
+#~ "a HTTPS session."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "This is the public part of the "
+#~ "service private/public key pair. cert_file "
+#~ "must be a PEM formatted certificate "
+#~ "chain file."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "A mapping from attributes in the "
+#~ "response from the IdP to django "
+#~ "user attributes."
+#~ msgstr ""
+

BIN
desktop/libs/liboauth/src/liboauth/static/art/icon-fb.png


BIN
desktop/libs/liboauth/src/liboauth/static/art/icon-gplus.png


BIN
desktop/libs/liboauth/src/liboauth/static/art/icon-linkedin.png


BIN
desktop/libs/liboauth/src/liboauth/static/art/icon-twitter.png