Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Traducción del archivo 'authentication.rst' y mejoras en el 'readme' #6

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 20 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,42 @@
La mejor forma para iniciarse con el Framework Web [Pyramid](http://docs.pylonsproject.org/en/latest/docs/pyramid.html)
es haciendo un recorrido por las funcionalidades más resaltantes
del mismo. Este repositorio es para mantener una traducción
*no oficial* del [Quick Tutorial](http://docs.pylonsproject.org/projects/pyramid/en/latest/quick_tutorial/index.html) incluido en la documentación
*no oficial* del [Quick Tutorial](http://docs.pylonsproject.org/projects/pyramid/en/latest/quick_tutorial/index.html) incluído en la documentación
del Framework.

## Indicaciones para seguir el tutorial

*TODO*

## Indicaciones para colaborar con traducción
## Indicaciones para colaborar con traducción

Para participar de la traducción por favor revise en el documento de
avances que porciones se encuentran traducidas. Coloque en la sección de
[Issues](https://github.com/pyve/Pyramid-Tutorial-Rapido/issues) el
título que va a traducir. Haga un Fork del repositorio y proceda a traducir
la porción que indicó en el ticket. Una vez finalizado proceda a hacer un
Pull Request para que otro colaborador pueda hacer una revisión rápida de
Para participar de la traducción por favor;

1. Haga un Fork del repositorio.

2. Revise en el documento de avances que porciones se encuentran traducidas.

3. Coloque en la sección de [Issues](https://github.com/pyve/Pyramid-Tutorial-Rapido/issues) el
título que va a traducir.

4. Proceda a traducir la porción que indicó en el ticket.

5. Devuelva los cambios vía Pull Request.


Ésto para que otro colaborador pueda hacer una revisión rápida de
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@talueses "Esto" no se acentúa

tradujo.

En caso de realizar una revisión global de ortografía o redacción por favor
indicarlo en el ticket nombrando a las personas que estén trabajando
simultaneamente con usted en algún archivo, de modo que estén concientes de
posible cambios en sus contenidos.

Por favor no cambie los archivos en inglés, considerelos como de sólo
lectura.
**Por favor no cambie los archivos en inglés, considerelos como de sólo
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@talueses "Considérelos" (con acento en la é)

lectura.**

Al incorporarse en el proceso de traducción por favor agregue su nombre en
el siguiente título.
el siguiente apartado.


## Colaboradores
Expand Down
139 changes: 139 additions & 0 deletions tutorial_rapido/authentication.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
==============================
20: Logueos con autenticación
==============================

Una vista para ingresar que autentifica un nombre de usuario/contraseña contra una lista de
usuarios.

Fondo
======

La mayoría de las aplicaciones web tienen direcciones URL que permiten a los usuarios añadir/editar/borrar
contenido a través de un navegador web.
Es tiempo de agregar
:ref:`seguridad <security_chapter>` a la aplicación.
En este primer paso, nos vamos a introducir en la autenticación.
Es decir, el registro y cierre de sesión de los usuarios conectados
utilizando las instalaciones Pyramid's de forma fácil.


En el siguiente paso nos vamos a introducir en la protección de recursos
con declaraciones de seguridad para la autorización.

Objetivos
==========

- Introducción de los conceptos de autenticación

- Crear vistas para ingresar/salir


Pasos
=====

#. Vamos a utilizar la clase "vista" como punto de partida:

.. code-block:: bash

$ cd ..; cp -r view_classes authentication; cd authentication
$ $VENV/bin/python setup.py develop

#. Colocar el hash de seguridad en el archivo ``authentication/development.ini``
de configuración como ``tutorial.secret`` en vez de colocarlo directo en
el código:

.. literalinclude:: authentication/development.ini
:language: ini
:linenos:

#. Obten la autenticación (y por ahora, las políticas de autorización) y la ruta
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@talueses "Obtén" (con acento en la é)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

De hecho, en la lista casi todos los verbos están en infinitivo, quizás deberías cambiar Obten por Obtener

de ingreso dentro de :term:`configurator` en
``authentication/tutorial/__init__.py``:

.. literalinclude:: authentication/tutorial/__init__.py
:linenos:

#. Crear un módulo: ``authentication/tutorial/security.py`` que puede encontrar
    nuestra información del usuario al proporcionar la llamada a la política
de autenticación

.. literalinclude:: authentication/tutorial/security.py
:linenos:

#. Actualizar la vista en: ``authentication/tutorial/views.py``:

.. literalinclude:: authentication/tutorial/views.py
:linenos:

#. Agregar una plantilla de ingreso en: ``authentication/tutorial/login.pt``:

.. literalinclude:: authentication/tutorial/login.pt
:language: html
:linenos:

#. Proporcionar un inicio de sesión y salida del sistema en: ``authentication/tutorial/home.pt``

.. literalinclude:: authentication/tutorial/home.pt
:language: html
:linenos:

#. Ejecuta tu aplicación Pyramid con:

.. code-block:: bash

$ $VENV/bin/pserve development.ini --reload

#. Abre http://localhost:6543/ en tu navegador.

#. Click en "Inicio de sesión".

#. Envíe el formulario de inicio de sesión con el nombre de usuario y la contraseña
``editor``.

#. Notar que el botón "Inicio de sesión" cambió a "Salir".

#. Click en "Salir" link.

Análisis
========

A diferencia de muchos frameworks web, Pyramid incluye un modelo de seguridad
incorporada pero que es opcional para la autenticación y autorización. Este
tipo de seguridad en el sistema está destinado a ser flexible y apoyar a
muchas necesidades. En este modelo de seguridad, la autenticación (quién eres)
y la autorización (qué tienes permitido hacer) no son conectable, pero se pueden
desvincular.
Pero aprenderemos un paso a la vez, vamos a proveer un sistema con inicio y salida
del mismo.

En éste ejemplo se optó por usar el paquete:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@talueses En esta oración "éste" no se acentúa porque es un adjetivo demostrativo

:ref:`AuthTktAuthenticationPolicy <authentication_module>`.
Lo activamos en nuestra configuración y proporcionamos un
"ticket-signing" en nuestro archivo INI.

Nuestra clase de la "vista" nos extendió un inicio de sesión.
Cuando llegamos a ella, a través de un GET, ella retorna
un formulario de inicio de sesión. Al llegar a través de POST, se procese el
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@talueses ¿procese o procesa?

nombre de usuario y la contraseña contra el "groupfinder" que debe estar
registrada en la configuración.

En nuestra plantilla, buscamos el valor `logged_in`` de la clase "vista"
Usamos ésto para saber si hay un usuario logueado, de haberlo.
En la plantilla nosotros podemos escoher como mostrar el enlace
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@talueses Debería ser "escoger" en lugar de "escoher". Y "como" debería llevar acento en la o, "cómo"

de inicio de sesión para los usuarios anónimos o el enlace de salida
para los usuarios logueados.


Crédito extra
============

#. ¿Cuál es la diferencia entre un usuario y un administrador?

#. ¿Puedo usar una base de datos detrás de mi ``groupfinder`` para buscar los administradores?

#. Una vez se inicia sesión, ¿toda la información centrada del usuario puede atascarse
    en cada solicitud? Usar ``import pdb; pdb.set_trace()`` para responder
ésto.

.. seealso:: Vea también :ref:`security_chapter`,
:ref:`AuthTktAuthenticationPolicy <authentication_module>`.
118 changes: 118 additions & 0 deletions tutorial_rapido/authorization.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
===========================================
21: Proteger recursos con "Autorización"
===========================================

Asignar declaraciones de seguridad para recursos que describan los permisos
requeridos para realizar una operación.

Fondo
==========

Nuestra aplicación tendrá URLs que permitirán a través del navegador
al usuario agregar/editar/borrar contenido. Es tiempo de agregar seguridad
a la aplicación. Vamos a proteger nuestra vista de agregar/editar requeriendo
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@talueses Quizás se pueda redactar un poco mejor este párrafo para mejor comprensión. Sugiero algo como:

Nuestra aplicación tendrá URLs que permitirán al usuario agregar/editar/borrar contenido a través del navegador.

También el gerundio de requerir es requiriendo, no requeriendo

un inicio de sesión (nombre de usuario del ``editor`` y contraseña del
``editor``). Vamos a permitir que otras vistas continúen trabajando
sin una contraseña.


Objetivos
==========

- Introducción a los conceptos de autenticación, autorización,
permiso, y listas de acceso de control(ACLs) en Pyramid.

- Hacer un :term:`root factory` que retorne una instancia de nuestra
clase para la parte superior de la aplicación.

- Asignar declaraciones de seguridad para nuestro recurso raíz

- Agregar un permisos en una vista implicada.

- Proveer un :term:`Forbidden view` para manejar las visitas a una
URL sin el permiso adecuado.


Pasos
=====

#. Vamos a usar el paso de autenticación como nuestro punto de inicio:

.. code-block:: bash

$ cd ..; cp -r authentication authorization; cd authorization
$ $VENV/bin/python setup.py develop

#. Comenzaremos por cambiar: ``authorization/tutorial/__init__.py`` para
especificar una raíz al :term:`configurator`:

.. literalinclude:: authorization/tutorial/__init__.py
:linenos:

#. Eso significa que tenemos que que vamos a implementar:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@talueses La expresión que tenemos que que vamos a no se entiende

``authorization/tutorial/resources.py``

.. literalinclude:: authorization/tutorial/resources.py
:linenos:

#. Cambiar ``authorization/tutorial/views.py`` para requerir ``edit``
permiso en la vista ``hello`` e implementar la prohibición en la vista:

.. literalinclude:: authorization/tutorial/views.py
:linenos:

#. Ejecuta tu aplicación Pyramid usando:

.. code-block:: bash

$ $VENV/bin/pserve development.ini --reload

#. Abrir http://localhost:6543/ en el navegador.

#. Si apareces con la sesión iniciada, click en el link "salir".

#. Visita http://localhost:6543/howdy en una navegador. Se te pedirá
que inicies sesión


Análisis
========

Este simple tutorial puede reducirse a lo siguiente:

- Una vista puede requerir un *permiso* (``edit``)

- El contexto para nuestra vista (el ``Root``) tiene una lista de
acceso de control. (ACL)

- Esta ACL dice que el permiso para ``edit`` está disponible en, ``Root``
para el grupo ``group:editors`` *principal*

- El registro ``groupfinder`` responderá si un usuario en particular
(``editor``) pertenece a un grupo en especial (``group:editors``)

En resumen: ``hello`` requiere permisos para ``edit`` , ``Root`` dice el
``group:editors`` tiene permisos para ``edit``.

Claro, esto solo aplica en: ``Root``. En otra parte del sitio
(a.k.a. *contexto*) podría tener un diferente ACL.

Sino has iniciado sesión y visitas ``/howdy``, necesitarás hacerlo en
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@talueses Me parece que debería ser Si no, porque sino es una contraposición a un concepto afirmativo

la pantalla de inicio de sesión. Cómo sabe Pyramid cuál es la página de inicio
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@talueses Falta el signo de interrogación de apertura

de sesión? Nosotros explícitamente se lo dijimos en la vista ``login`` usando el
decorador ``@forbidden_view_config`` en dicha vista.

Crédito extra
============

#. Tengo que poner un ``renderer`` en mi decorador ``@forbidden_view_config``?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@talueses También falta el signo de interrogación de apertura


#. Tal vez le gustaría experimentar con no tener suficientes permisos
(forbidden) como para editar. ¿Cómo puedes hacer para cambiar ésto?

#. Tal vez queremos almacenar declaraciones de seguridad en una base de datos y
    permitir la edición a través de un navegador. ¿Cómo puede hacerse esto?

#. ¿Qué pasa si queremos diferentes declaraciones de seguridad en diferentes tipos de
    objetos? O en el mismo tipo de objetos, pero en diferentes partes de una
    Jerarquía URL?