diff --git a/grails-app/i18n/messages-nimble_es.properties b/grails-app/i18n/messages-nimble_es.properties new file mode 100644 index 0000000..8d02113 --- /dev/null +++ b/grails-app/i18n/messages-nimble_es.properties @@ -0,0 +1,447 @@ +# Nimble i18n Default (Spanish) Messages + +########## +# General +nimble.invalid.captcha=Los datos que ha introducido en el código de verificación son incorrectos, por favor pruebe otra vez + +########## +# Labels +nimble.label.usergreeting=Bienvenido +nimble.label.user=Usuario +nimble.label.username=Nombre de usuario +nimble.label.password=Contraseña +nimble.label.password.confirmation=Confirmar Contraseña +nimble.label.currentpassword=Contraseña Actual +nimble.label.newpassword=Nueva Contraseña +nimble.label.newpassword.confirmation=Confirme la Nueva Contraseña +nimble.label.captcha=Código de verificación +nimble.label.externalaccount=Cuenta externa +nimble.label.federatedaccount=Cuenta federada +nimble.label.extendedinformation=Información de cuenta ampliada +nimble.label.fullname=Nombre completo +nimble.label.email=Correo electrónico +nimble.label.name=Nombre +nimble.label.description=Descripción +nimble.label.protected=Protegido +nimble.label.yes=Si +nimble.label.no=No +nimble.label.true=Verdadero +nimble.label.false=Falso +nimble.label.enabled=Activado +nimble.label.disabled=Desactivado +nimble.label.managed=Manejado +nimble.label.permissions=Permisos +nimble.label.roles=Roles +nimble.label.members=Miembros +nimble.label.groups=Grupos +nimble.label.users=Usuarios +nimble.label.admins=Administradores +nimble.label.logins=Autenticaciones +nimble.label.created=Creado +nimble.label.lastupdated=Última actualización +nimble.label.type=Tipo +nimble.label.state=Estado +nimble.label.remoteapi=API remota +nimble.label.provider=Proveedor +nimble.label.external.managment=Manejado externamente +nimble.label.local.managment=Manejado localmente +nimble.label.error=Error +nimble.label.membership=Membresí­a +nimble.label.remoteaddress=Dirección remota +nimble.label.remotehost=Host remoto +nimble.label.useragent=Useragent +nimble.label.time=Hora +nimble.label.target=Objetivo +nimble.label.permission=Permiso +nimble.label.rememberme=¿Mantenerse autenticado? +nimble.label.openid=OpenID +nimble.label.facebook=Facebook +nimble.label.google=Google +nimble.label.yahoo=Yahoo! +nimble.label.blogger=Blogger +nimble.label.wordpress=Wordpress +nimble.label.technorati=Technorati +nimble.label.flickr=Flickr + +########### +# Links +nimble.link.changepassword=Cambiar contraseña +nimble.link.registeraccount=Registrar cuenta +nimble.link.resetpassword=Reinicializar contraseña +nimble.link.search=Buscar +nimble.link.continue=Continuar +nimble.link.close=Cerrar +nimble.link.creategroup=Crear grupo +nimble.link.updategroup=Actualizar grupo +nimble.link.createrole=Crear rol +nimble.link.updaterole=Actualizar rol +nimble.link.createuser=Crear usuario +nimble.link.updateuser=Actualizar usuario +nimble.link.addgroups=Añadir grupos +nimble.link.addmembers=Añadir miembros +nimble.link.addpermission=Añadir permiso +nimble.link.createpermission=Crear permiso +nimble.link.addroles=Añadir roles +nimble.link.login.basic=Autenticar +nimble.link.logout.basic=Salir +nimble.link.view=Vista +nimble.link.revoke=Revocar +nimble.link.remove=Quitar +nimble.link.delete=Eliminar +nimble.link.grant=Conceder +nimble.link.assign=Asignar +nimble.link.accept=Aceptar +nimble.link.cancel=Cancelar +nimble.link.useexistingaccount=Usar existente +nimble.link.createaccount=Crear cuenta +nimble.link.forgottenpassword=Recordar Contraseña +nimble.link.newuser=Nuevo usuario +nimble.link.activateaccount=Activar su cuenta +nimble.link.verifyemail=Confirmar correo electrónico +nimble.link.edit=Editar +nimble.link.users=Usuarios +nimble.link.roles=Roles +nimble.link.groups=Grupos +nimble.link.admins=Administradores +nimble.link.changelocalpassword=Cambiar Contraseña local +nimble.link.enableaccount=Activar Cuenta +nimble.link.disableaccount=Desactivar Cuenta +nimble.link.enableapi=Activar API +nimble.link.disableapi=Desactivar API + +########## +# Layouts +nimble.layout.admin.title=Nimble | Administración | +nimble.layout.admin.banner.heading=Nimble + +########## +# Views +nimble.view.account.changepassword.initiate.title=Cambiar Contraseña +nimble.view.account.changepassword.initiate.heading=Cambiar Contraseña +nimble.view.account.changepassword.initiate.descriptive=Puede cambiar su Contraseña por una nueva en el enlace de la parte inferior. Para verificar la información debería proporcionar su contraseña actual + +nimble.view.account.changepassword.complete.title=Contraseña cambiada +nimble.view.account.changepassword.complete.heading=Contraseña cambiada +nimble.view.account.changepassword.complete.descriptive=Su contraseña se cambió correctamente. + +nimble.view.account.registeraccount.initiate.title=Registrar nueva cuenta +nimble.view.account.registeraccount.initiate.heading=Registrar nueva cuenta +nimble.view.account.registeraccount.initiate.descriptive=Para crear una cuenta nueva en el sistema debería introducir la siguiente información + +nimble.view.account.registeraccount.complete.title=Cuenta registrada correctamente +nimble.view.account.registeraccount.complete.heading=Cuenta registrada correctamente +nimble.view.account.registeraccount.complete.descriptive=Ha registrado correctamente la nueva cuenta en este sistema +nimble.view.account.registeraccount.complete.sentemail=Para completar el proceso se envió un correo electrónico a la dirección proporcionada. Por favor, siga las instrucciones que allí­ se detallan para autenticarse por primera vez +nimble.view.account.registeraccount.complete.continue=Continuar + +nimble.view.account.forgottenpassword.initiate.title=Recordar Contraseña +nimble.view.account.forgottenpassword.initiate.heading=Recordar Contraseña +nimble.view.account.forgottenpassword.initiate.descriptive=Por favor, introduzca su dirección de correo electrónico. Le reinicializaremos su contraseña y le enviaremos al correo electrónico instrucciones de como autenticarse + +nimble.view.account.forgottenpassword.complete.title=Reinicialización de Contraseña +nimble.view.account.forgottenpassword.complete.heading=Reinicialización de Contraseña +nimble.view.account.forgottenpassword.complete.descriptive=Su contraseña ha sido reinicializada. Por favor, compruebe el correo electrónico para obtener detalles sobre como volver a autenticarse + +nimble.view.admins.title=Administradores actuales +nimble.view.admins.heading=Administradores actuales +nimble.view.admins.descriptive= +nimble.view.admins.addadmin.heading=Añadir administradores +nimble.view.admins.addadmin.descriptive= +nimble.view.admins.search.notfound=Ningún usuario cumple los requisitos que especificó, o todos los que lo cumplen son ya administradores. + +nimble.view.auth.openid.redirection=Redireccionar a proveedor de OpenID + +nimble.view.group.create.title=Crear Grupo +nimble.view.group.create.heading=Crear Grupo +nimble.view.group.create.descriptive=Introduzca detalles del Grupo +nimble.view.group.edit.title=Editar Grupo +nimble.view.group.edit.heading=Editar Grupo {0} +nimble.view.group.edit.descriptive= +nimble.view.group.list.title=Grupos actuales +nimble.view.group.list.heading=Grupos actuales +nimble.view.group.list.descriptive= +nimble.view.group.show.title=Grupo {0} +nimble.view.group.show.heading=Grupo {0} +nimble.view.group.show.descriptive= +nimble.view.group.show.details.heading=Información del Grupo + +nimble.view.role.create.title=Crear Rol +nimble.view.role.create.heading=Crear rol +nimble.view.role.create.descriptive=Introduzca información para el nuevo rol +nimble.view.role.edit.title=Editar Rol +nimble.view.role.edit.heading=Editar rol {0} +nimble.view.role.edit.descriptive= +nimble.view.role.list.title=Roles actuales +nimble.view.role.list.heading=Roles actuales +nimble.view.role.list.descriptive= +nimble.view.role.show.title=Rol {0} +nimble.view.role.show.heading=Rol {0} +nimble.view.role.show.descriptive= +nimble.view.role.show.details.heading=Información del Rol + +nimble.view.user.changepassword.title=Cambiar contraseña +nimble.view.user.changepassword.heading=Cambiar contraseña +nimble.view.user.changepassword.descriptive= +nimble.view.user.changelocalpassword.title=Cambiar contraseña local +nimble.view.user.changelocalpassword.heading=Cambiar contraseña local +nimble.view.user.changelocalpassword.descriptive= +nimble.view.user.create.title=Crear usuario +nimble.view.user.create.heading=Crear usuario +nimble.view.user.create.descriptive=Introduzca la información para la nueva cuenta de usuario +nimble.view.user.edit.title=Editar usuario +nimble.view.user.edit.heading=Editar usuario {0} +nimble.view.user.edit.descriptive= +nimble.view.user.list.title=Usuarios actuales +nimble.view.user.list.heading=Usuarios actuales +nimble.view.user.list.descriptive= +nimble.view.user.show.title=Detalles del Usuario +nimble.view.user.show.heading=Detalles del Usuario +nimble.view.user.show.descriptive= +nimble.view.user.show.details.heading=Información de la cuenta +nimble.view.user.show.federated.heading=Información de la Cuenta Federada +nimble.view.user.show.extendedinformation.heading=Información extendida de la Cuenta + +########## +# Templates +nimble.template.sessionterminated.title=Sesión finalizada +nimble.template.sessionterminated.descriptive=Desafortunadamente su sesión ha caducado. La caducidad sucede a menudo cuando se deja abierta largos perí­odos de tiempo sin realizar ninguna acción. Si experimenta este problema a menudo solicite asistencia al departamento TIC + +nimble.template.logins.heading=Autenticaciones +nimble.template.logins.list.heading={0} autenticaciones más recientes +nimble.template.logins.list.noresults=Este usuario aún no se ha autenticado en este servicio + +nimble.template.members.heading=Miembros +nimble.template.members.add.heading=Añadir miembros +nimble.template.members.add.user.descriptive= +nimble.template.members.add.group.descriptive= +nimble.template.members.add.group.noresults=Ningún grupo cumple los criterios de búsqueda o todos los grupos que la cumplen son ya miembros +nimble.template.members.add.user.noresults=Ningún usuario cumple los criterios de búsqueda o todos los usuarios que los cumplen son ya miembros +nimble.template.members.list.users.heading=Membresí­a de usuario +nimble.template.members.list.users.noresults=Ningún usuario es miembro +nimble.template.members.list.groups.heading=Membresí­a de grupo +nimble.template.members.list.groups.noresults=Ningún grupo es miembro + +nimble.template.permissions.heading=Permisos +nimble.template.permission.add.heading=Añadir Permisos +nimble.template.permission.add.descriptive=Puede añadir manualmente un permiso +nimble.template.permission.list.noresults=No tiene asignado ningún permiso + +nimble.template.roles.heading=Roles +nimble.template.roles.add.heading=Añadir a roles +nimble.template.roles.add.descriptive= +nimble.template.roles.list.noresults=No tiene ningún rol asignado +nimble.template.roles.add.noresults=Ningún rol cumple los criterios de búsqueda o todos los roles que los cumplen ya son miembros + +nimble.template.groups.heading=Grupos +nimble.template.groups.add.heading=Añadir a grupos +nimble.template.groups.add.descriptive= +nimble.template.groups.add.noresults=Ningún grupo cumple los criterios de búsqueda o la membresí­a ha sido concedida a todos los grupos que los cumplen +nimble.template.groups.list.noresults=Ningún grupo asignado + +nimble.template.passwordpolicy.title=Requisitos de las Contraseña +nimble.template.passwordpolicy=

Para asegurar la seguridad de las contraseña estas deben cumplir los siguientes requisitos

\ + \ +

Siempre que sea posible, especifique una contraseña que sea determinada como 'fuerte' por la barra indicadora.

+nimble.template.accountcreationpolicy=

Este servicio se integra con los siguientes proveedores de identificación

\ + \ +

Esto significa que puede utilizar una cuenta existente para autenticarse en nuestro sistema, simplemente pulse 'Usar cuenta existente' abajo y después identifí­quese con su cuenta actual.

\ +

Como alternativa, si no puede utilizar ninguno de los proveedores especificados o prefiere una cuenta local, pulse 'Crear cuenta' abajo.

+ +nimble.template.usernamepolicy.title=Requisitos del nombre de usuario +nimble.template.usernamepolicy=

Los nombres de usuario deben cumplir los siguientes requisitos

\ + + +nimble.template.login.title=Autenticación +nimble.template.login.heading=Autenticación +nimble.template.login.local.heading=Autenticación con una cuenta local +nimble.template.login.external.heading=Autenticación con una cuenta externa +nimble.template.login.facebook.heading=Autenticación utilizando su cuenta de Facebook +nimble.template.login.facebook.descriptive=Simplemente autenticase utilizando su cuenta existente de Facebook. Tras esto sera capaz de acceder a los servicios de este sistema. +nimble.template.login.google.heading=Autenticación con una cuenta de Google +nimble.template.login.google.descriptive=Simplemente autenticase utilizando su cuenta existente de Google. Tras esto sera capaz de acceder a los servicios de este sistema. +nimble.template.login.yahoo.heading=Autenticación con una cuenta de Yahoo! +nimble.template.login.yahoo.descriptive=Simplemente autenticase utilizando su cuenta existente de Yahoo!. Tras esto sera capaz de acceder a los servicios de este sistema. +nimble.template.login.openid.heading=Autenticación con una cuenta de OpenID +nimble.template.login.openid.descriptive=Simplemente autenticase utilizando su cuenta existente de OpenID. Tras esto sera capaz de acceder a los servicios de este sistema. +nimble.template.login.openid.identifier=OpenID URL +nimble.template.login.blogger.heading=Autenticación con una cuenta de Blogger +nimble.template.login.blogger.descriptive=Simplemente autenticase utilizando su cuenta existente de Blogger. Tras esto sera capaz de acceder a los servicios de este sistema. +nimble.template.login.blogger.identifier=Blogger URL +nimble.template.login.wordpress.heading=Autenticación con una cuenta de Wordpress +nimble.template.login.wordpress.descriptive=Simplemente autenticase utilizando su cuenta existente de Wordpress. Tras esto sera capaz de acceder a los servicios de este sistema. +nimble.template.login.wordpress.identifier=Wordpress Blog URL +nimble.template.login.technorati.heading=Autenticación con una cuenta de Technorati +nimble.template.login.technorati.descriptive=Simplemente autenticase utilizando su cuenta existente de Technorati. Tras esto sera capaz de acceder a los servicios de este sistema. +nimble.template.login.technorati.identifier=Nombre de usuario en Technorati +nimble.template.login.flickr.heading=Autenticación con una cuenta de Flickr +nimble.template.login.flickr.descriptive=Simplemente autenticase utilizando su cuenta existente de Flickr. Tras esto sera capaz de acceder a los servicios de este sistema. + +nimble.template.mail.accountregistration.descriptive= +nimble.template.mail.accountregistration.trouble=Si está experimentando problemas para pulsar el enlace de arriba por favor copie y pegue la siguiente información en su navegador + +nimble.template.mail.emailchange.descriptive= +nimble.template.mail.emailchange.trouble=Si está experimentando problemas para pulsar el enlace de arriba por favor copie y pegue la siguiente información en su navegador + +nimble.template.mail.forgottenpassword.descriptive=Se solicitó una reinicialización de la contraseña de su cuenta de usuario. Si usted no lo solicitó contacte con el administrador inmediatamente. +nimble.template.mail.forgottenpassword.instructions=Deberí­a utilizar la nueva contraseña generada para usted para autenticarse. Aunque esta contraseña es aleatoria y segura, el recomendamos que la cambie tan pronto como sea posible + +nimble.template.mail.forgottenpassword.external.descriptive=

Se solicitó una reinicialización de la contraseña de su cuenta, sin embargo no podemos satisfacer su petición.

\ +

Su cuenta está configurada como manejada por una fuente externa o ví­a una fuente federada como por ejemplo OpenID o Facebook Connect.

\ +

Para cambiar su contraseña por favor visite la web de su proveedor del servicio. Si cree que esto puede ser un error póngase en contacto con uno de nuestros administradores los cuales están encantados de poder resolver su problema.

\ +

Si no realizó esta petición contacte con el administrador inmediatamente.

\ + +nimble.template.delete.confirm.title=Confirmar borrado + +nimble.template.sidenavigation.heading=Navegación del control de acceso + +####### +# User +nimble.user.nonexistant=El usuario identificado por el id {0} no pudo ser localizado +nimble.user.validate.error=Su cuenta de usuario no pudo ser validada +nimble.user.validate.success=Su cuenta ha sido validada +nimble.user.validate.exists=Esta cuenta ya fue validada +nimble.user.forgottenpassword.noaccount=No ha sido posible encontrar una cuenta con esa dirección de correo electrónico + +nimble.user.username.valid=El usuario solicitado es válido +nimble.user.username.invalid=El usuario proporcionado no es válido, o ya está siendo utilizado, por favor escoja otro. + +nimble.user.password.change.success=Se cambió la contraseña correctamente +nimble.user.password.change.error=No se pudo cambiar la contraseña +nimble.user.password.required=La contraseña proporcionada es invalida. \ + Las contraseñas deben estar formadas por al menos 8 caracteres y contener mayúsculas y minúsculas. \ + Las contraseñas deberán además contener al menos un sí­mbolo y un número +nimble.user.passconfirm.required=Se debe proporcionar una confirmación de la contraseña para la nueva cuenta +nimble.user.password.nomatch=Las contraseñas no coinciden +nimble.user.password.no.lowercase=La contraseña no contiene ninguna letra minúscula +nimble.user.password.no.uppercase=La contraseña no contiene ninguna letra mayúscula +nimble.user.password.no.numbers=La contraseña no contiene ningún número +nimble.user.password.no.symbols=La contraseña no contiene ningún sí­mbolo +nimble.user.password.duplicate=La contraseña ya fue utilizada, la contraseña debe ser única +nimble.user.password.external.nochange=La contraseña es manejada externamente, no se cambió la contraseña. +nimble.user.password.internal.nochange=La contraseña es manejada internamente, no se cambió la contraseña. + +nimble.user.update.success=Cuenta {0} actualizada correctamente +nimble.user.update.error=Error actualizando cuenta {0} +nimble.user.enable.success=Cuenta {0} habilitada correctamente +nimble.user.enable.error=No ha sido posible habilitar la cuenta, por favor contacte con un administrador +nimble.user.disable.success=Cuenta {0} deshabilitada correctamente +nimble.user.disable.error=No ha sido posible deshabilitar la cuenta, por favor contacte con un administrador +nimble.user.enableapi.success=API remoto habilitado correctamente para la cuenta {0} +nimble.user.enableapi.error=No ha sido posible habilitar el API remoto en la cuenta, por favor contacte con un administrador +nimble.user.disableapi.success=API remoto deshabilitado correctamente para la cuenta {0} +nimble.user.disableapi.error=No ha sido posible deshabilitar el API remoto en la cuenta, por favor contacte con un administrador + +######### +# Admins +nimble.admin.grant.success=Establecida la cuenta {0} como un administrador +nimble.admin.grant.failed=No ha sido posible establecer la cuenta como un administrador + +nimble.admin.revoke.self=Los administradores no pueden cancelar los permisos administrativos de su propia cuenta +nimble.admin.revoke.success=Cancelados los permisos administrativos de la cuenta {0} +nimble.admin.revoke.error=No ha sido posible cancelar los permisos administrativos + +######## +# Login +nimble.login.failed.credentials=Nombre de usuario o contraseña inválido +nimble.login.failed.disabled=Nombre de usuario o contraseña inválido +nimble.login.failed.general=Nombre de usuario o contraseña inválido + +nimble.login.facebook.error=No ha sido posible la verificación de la cuenta de Facebook. Por favor salga de Facebook y pruebe otra vez. +nimble.login.facebook.cookies=La cuenta de Facebook no está activa, por favor autentí­quese en Facebook de nuevo. + +nimble.login.openid.invalid.identifier= +nimble.login.openid.openid.failed=Actualmente no es posible utilizar este servicio. +nimble.login.openid.openid.internal.error.req=No ha sido posible determinar su proveedor de OpenID. Compruebe que haya introducido un identificador válido. +nimble.login.openid.openid.internal.error.res=Su proveedor de OpenID devolvió una respuesta inválida. ¿Autorizó el intento de autenticación? + +nimble.login.openid.google.failed=Actualmente no es posible utilizar este servicio. +nimble.login.openid.google.internal.error.req=El proveedor de Google de OpenID no responde, por favor inténtelo de nuevo. +nimble.login.openid.google.internal.error.res=Su proveedor de Google de OpenID devolvió una respuesta inválida. ¿Autorizó el intento de autenticación? + +nimble.login.openid.yahoo.failed=Actualmente no es posible utilizar este servicio. +nimble.login.openid.yahoo.internal.error.req=El proveedor de Yahoo! de OpenID no responde, por favor inténtelo de nuevo. +nimble.login.openid.yahoo.internal.error.res=Su proveedor de Yahoo! de OpenID devolvió una respuesta inválida. ¿Autorizó el intento de autenticación? + +nimble.login.openid.blogger.failed=Actualmente no es posible utilizar este servicio. +nimble.login.openid.blogger.internal.error.req=El proveedor de Blogger de OpenID no responde, por favor inténtelo de nuevo. +nimble.login.openid.blogger.internal.error.res=Su proveedor de Blogger de OpenID devolvió una respuesta inválida. ¿Autorizó el intento de autenticación? + +nimble.login.openid.wordpress.failed=Actualmente no es posible utilizar este servicio. +nimble.login.openid.wordpress.internal.error.req=El proveedor de Wordpress de OpenID no responde, por favor inténtelo de nuevo. +nimble.login.openid.wordpress.internal.error.res=Su proveedor de Wordpress de OpenID devolvió una respuesta inválida. ¿Autorizó el intento de autenticación? + +nimble.login.openid.flickr.failed=Actualmente no es posible utilizar este servicio. +nimble.login.openid.flickr.internal.error.req=El proveedor de Flickr de OpenID no responde, por favor inténtelo de nuevo. +nimble.login.openid.flickr.internal.error.res=Su proveedor de Flickr de OpenID devolvió una respuesta inválida. ¿Autorizó el intento de autenticación? + +nimble.login.openid.technorati.failed=Actualmente no es posible utilizar este servicio. +nimble.login.openid.technorati.internal.error.req=El proveedor de Technorati de OpenID no responde, por favor inténtelo de nuevo. +nimble.login.openid.technorati.internal.error.res=Su proveedor de Technorati de OpenID devolvió una respuesta inválida. ¿Autorizó el intento de autenticación? + +######### +# Groups +nimble.group.nonexistant=El grupo identificado con id {0} no pudo ser localizado +nimble.group.create.success=Grupo {0} creado correctamente +nimble.group.create.error=Ocurrió un error tratando de crear el nuevo grupo +nimble.group.update.success=Grupo {0} actualizado correctamente +nimble.group.update.error=Ocurrió un error tratando de actualizar el grupo {0} +nimble.group.delete.confirm=¿Está seguro de que desea eliminar permanentemente este grupo y desvincular de él a todos sus miembros? +nimble.group.delete.success=Grupo {0} eliminado correctamente +nimble.group.delete.error=Error tratando de eliminar el grupo {0} +nimble.group.name.valid=El nombre de grupo solicitado es válido +nimble.group.name.invalid=El nombre de grupo solicitado es inválido +nimble.group.addmember.success=La cuenta {1} fue hecha miembro correctamente de este grupo {0} +nimble.group.addmember.error=Ocurrió un error cuando se intentaba vincular la cuenta a este grupo +nimble.group.removemember.success=La cuenta {1} fue desvinculada correctamente y ya no es miembro del grupo {0} +nimble.group.removemember.error=Ocurrió un error cuando se intentaba desvincular la cuenta de este grupo +nimble.group.protected.no.modification=Este grupo está protegido y puede no ser posible su modificación mediante el interfaz web + +####### +# Roles +nimble.role.nonexistant=No fue posible localizar el rol con identificador {0} +nimble.role.create.success=Rol {0} creado correctamente +nimble.role.create.error=Ocurrió un error tratando de crear el nuevo rol +nimble.role.update.success=Rol {0} actualizado correctamente +nimble.role.update.error=Ocurrió un error tratando de actualizar el rol {0} +nimble.role.delete.confirm=¿Está seguro que desea eliminar correctamente el rol y desvincular todos los miembros de él? +nimble.role.delete.success=Role {0} eliminado correctamente +nimble.role.delete.error=Error eliminando el rol {0} +nimble.role.name.valid=El nombre de rol proporcionado es válido +nimble.role.name.invalid=El nombre de rol proporcionado es inválido +nimble.role.addmember.success=Se concedió correctamente al miembro {1} el role {0} +nimble.role.addmember.error=Ocurrió un error tratando de conceder este rol al miembro +nimble.role.removemember.success=El rol {0} fue eliminado del miembro {1} +nimble.role.removemember.error=Ocurrió un error tratando de eliminar este rol del miembro +nimble.role.protected.no.modification=El rol está protegido y puede no ser posible su modificación + +############## +# Permissions +nimble.permission.nonexistant=El permiso identificado por {0} no pudo eliminarse porque no existe +nimble.permission.create.success=El permiso fue añadido correctamente a {0} +nimble.permission.create.error=Error tratando de crear el nuevo permiso +nimble.permission.remove.success=El permiso fue eliminado correctamente de {0} +nimble.permission.remove.error=Error tratando de eliminar el permiso + +nimble.levelpermission.invalid.first.sector=La primera sección es inválida. Debe contener como mí­nimo un carácter y ningún carácter separador (:) +nimble.levelpermission.invalid.second.sector=La segunda sección es inválida. No debe contener ningún carácter separador (:) +nimble.levelpermission.invalid.third.sector=La tercera sección es inválida. No debe contener ningún carácter separador (:) +nimble.levelpermission.invalid.fourth.sector=La cuarta sección es inválida. No debe contener ningún carácter separador (:) +nimble.levelpermission.invalid.fifth.sector=La quinta sección es inválida. No debe contener ningún carácter separador (:) +nimble.levelpermission.invalid.sixth.sector=La sexta sección es inválida. No debe contener ningún carácter separador (:) diff --git a/grails-app/services/grails/plugins/nimble/core/UserService.groovy b/grails-app/services/grails/plugins/nimble/core/UserService.groovy index 30721e0..c85a456 100644 --- a/grails-app/services/grails/plugins/nimble/core/UserService.groovy +++ b/grails-app/services/grails/plugins/nimble/core/UserService.groovy @@ -36,6 +36,12 @@ class UserService { def grailsApplication def permissionService + /** + * login - Called when a user logs in. + * logout - Called when a user logs out. + * beforeregister - Called immediately before a new user is created. Can be used for validation. (i.e., user.errors.rejectValue('customfield', 'user.customfield.invalid') ) + * afterregister - Called immediately after a new user is created. + */ def events = [:] /** @@ -329,8 +335,33 @@ class UserService { log.debug("Creating new record for user [$user.id]$user.username login") def record = new LoginRecord() - record.remoteAddr = request.getRemoteAddr() - record.remoteHost = request.getRemoteHost() + /** + * Check user's IP in order of trust-worthy-ness + * ClientIP -> X-Forwarded-For -> RemoteAddr + **/ + def clientIpAddr = request.getHeader("Client-IP") + if (clientIpAddr == null) { + clientIpAddr = request.getHeader("X-Forwarded-For") + if (clientIpAddr == null) { + clientIpAddr = request.getRemoteAddr() + } + } + if (clientIpAddr != null) { + if (clientIpAddr.contains(",")) { + clientIpAddr.tokenize(",").get(0) + } + } + + /** + * This is to make sure we have the right domain name + **/ + def remoteHost = request.getRemoteHost() + if ((remoteHost == "127.0.0.1") && (clientIpAddr != remoteHost)) { + remoteHost = InetAddress.getByName(clientIpAddr).canonicalHostName + } + + record.remoteAddr = clientIpAddr + record.remoteHost = remoteHost record.userAgent = request.getHeader("User-Agent") record.owner = user