- Fecha y hora:
- 23/08/2016 09:44:06 (hace 8 años)
- Branches:
- master, carga
- Children:
- 13769af
- Parents:
- 32ce822
- Ubicación:
- usuario
- Ficheros:
-
- 1 añadido
- 2 editados
Leyenda
- No modificado
- Añadido
- Eliminado
-
usuario/urls.py
rd8d20e7 rb3c14f4 21 21 url(r'^logout/?$', 'usuario.views.salir', name='salir'), 22 22 url(r'^registro/$', RegistroCreate.as_view(), name='registro'), 23 url(r'^olvido-clave/$', 'usuario.views.olvido_clave', name='olvido_clave'), 24 url(r'^confirm/?$', 'usuario.views.confirmar_registro', name='confirmar_registro'), 25 url(r'^confirm-modificar-clave/?$', 'usuario.views.confirmar_modificar_clave', name='confirmar_modificar_clave'), 26 url(r'^modificar-clave/?$', 'usuario.views.modificar_clave', name='modificar_clave'), 23 27 ] -
usuario/views.py
rd8d20e7 rb3c14f4 30 30 from django.utils.translation import ugettext_lazy as _ 31 31 32 from base.constant import REGISTRO_MESSAGE, EMAIL_SUBJECT_REGISTRO 33 from base.functions import enviar_correo 32 from base.constant import REGISTRO_MESSAGE, EMAIL_SUBJECT_REGISTRO, CADUCIDAD_LINK_REGISTRO 33 from base.functions import enviar_correo, calcular_diferencia_fechas 34 34 from .forms import AutenticarForm, RegistroForm, OlvidoClaveForm, ModificarClaveForm, PerfilForm 35 35 … … 119 119 120 120 return HttpResponseRedirect(urlresolvers.reverse("inicio")) 121 122 123 def olvido_clave(request): 124 """! 125 Funcion que gestiona el envío de enlace para la modificación de la contraseña 126 127 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 128 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 129 @date 06-05-2016 130 @param request <b>{object}</b> Objeto que obtiene la petición 131 @return Redirecciona al usuario a la pagina de acceso al sistema 132 """ 133 134 form = OlvidoClaveForm() 135 136 if request.method == "POST": 137 form = OlvidoClaveForm(data=request.POST) 138 139 if form.is_valid(): 140 username = "%s%s%s" % ( 141 request.POST['rif_0'], request.POST['rif_1'], request.POST['rif_2'] 142 ) 143 144 correo = request.POST['correo'] 145 146 usr = User.objects.get(username=username) 147 148 ## Asigna un enlace de verificación para el olvido de clave 149 link = request.build_absolute_uri("%s?userid=%s&key=%s" % ( 150 urlresolvers.reverse('usuario.views.confirmar_modificar_clave'), 151 username, hash_user(usr, is_reset=True).decode() 152 )) 153 154 administrador, admin_email = '', '' 155 if settings.ADMINS: 156 administrador = settings.ADMINS[0][0] 157 admin_email = settings.ADMINS[0][1] 158 159 ## Indica si el correo electrónico fue enviado 160 enviado = enviar_correo(usr.email, 'usuario.olvido.clave.mail', EMAIL_SUBJECT_REGISTRO, { 161 'link': link, 'emailapp': settings.EMAIL_FROM, 'administrador': administrador, 162 'admin_email': admin_email 163 }) 164 165 if not enviado: 166 logger.warning( 167 str(_("Ocurrió un inconveniente al enviar el correo de recuperación de clave al usuario [%s]") 168 % username) 169 ) 170 else: 171 form = OlvidoClaveForm() 172 messages.info(request, _("Se le ha enviado, al correo electrónico indicado, la información necesaria " 173 "para la modificación de la contraseña")) 174 175 return render_to_response('usuario.recuperar.clave.html', {'form': form}, context_instance=RequestContext(request)) 176 177 178 def confirmar_modificar_clave(request): 179 """! 180 Función que permite confirmar el enlace enviado al usuario para la modificación de contraseña 181 182 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 183 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 184 @date 06-05-2016 185 @param request <b>{object}</b> Objeto que contiene la petición 186 @return Devuelve un mensje al usuario indicando el estatus de la validación del enlace 187 """ 188 userid = request.GET.get('userid', None) 189 key = request.GET.get('key', None) 190 verificado = False 191 mensaje = str(_("El usuario ha sido verificado")) 192 modificar_clave_url = None 193 194 if userid and key and User.objects.filter(username=userid): 195 user = User.objects.get(username=userid) 196 if calcular_diferencia_fechas(user.date_joined) <= CADUCIDAD_LINK_REGISTRO: 197 if key.strip() == hash_user(user, is_reset=True).decode(): 198 modificar_clave_url = "%s?userid=%s&key=%s" % ( 199 urlresolvers.reverse('modificar_clave'), user.username, hash_user(user, is_reset=True) 200 ) 201 verificado = True 202 else: 203 mensaje = str(_("El usuario no puede ser verificado")) 204 else: 205 mensaje = str(_("El enlace utilizado expiró. Contacte al administrador del sistema.")) 206 207 return render_to_response('usuario.validar.olvido.clave.html', { 208 'verificado': verificado, 'emailapp': settings.EMAIL_FROM, 'mensaje': mensaje, 209 'modificar_clave_url': modificar_clave_url 210 }, context_instance=RequestContext(request)) 211 212 213 def modificar_clave(request): 214 """! 215 Funcion que gestiona la modificación de contraseña 216 217 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 218 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 219 @date 06-05-2016 220 @param request <b>{object}</b> Objeto que obtiene la petición 221 @return Redirecciona al usuario a la pagina de autenticación del sistema 222 """ 223 form = ModificarClaveForm() 224 username = request.GET.get('userid', None) 225 226 if request.method == "POST": 227 form = ModificarClaveForm(data=request.POST) 228 229 if form.is_valid(): 230 user = User.objects.get(username=username) 231 user.set_password(request.POST['clave']) 232 user.save() 233 if UserProfile.objects.filter(user=user): 234 perfil = UserProfile.objects.get(user=user) 235 perfil.fecha_modpass = datetime.now() 236 perfil.save() 237 messages.info(request, _("Su contraseña ha sido modificada correctamente")) 238 239 logger.info(str(_("El usuario [%s] modificó su contraseña por olvido") % username)) 240 return HttpResponseRedirect(urlresolvers.reverse("acceso")) 241 242 return render_to_response('usuario.modificar.clave.html', {'form': form, 'fortaleza_clave': True}, 243 context_instance=RequestContext(request)) 244 245 246 def confirmar_registro(request): 247 """! 248 Función que permite confirmar el enlace enviado al usuario durante el registro 249 250 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 251 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 252 @date 02-05-2016 253 @param request <b>{object}</b> Objeto que contiene la petición 254 @return Devuelve un mensje al usuario indicando el estatus de la validación del enlace 255 """ 256 userid = request.GET.get('userid', None) 257 key = request.GET.get('key', None) 258 verificado = False 259 mensaje = str(_("El usuario ha sido verificado")) 260 login_url = None 261 262 if userid and key and User.objects.filter(username=userid): 263 user = User.objects.get(username=userid) 264 if calcular_diferencia_fechas(user.date_joined) <= CADUCIDAD_LINK_REGISTRO: 265 if key.strip() == hash_user(user, is_new_user=True).decode(): 266 user.is_active = True 267 user.save() 268 login_url = "%s?userid=%s&key=%s" % ( 269 urlresolvers.reverse('acceso'), user.username, hash_user(user, is_new_user=True) 270 ) 271 verificado = True 272 else: 273 mensaje = str(_("El usuario no puede ser verificado")) 274 else: 275 mensaje = str(_("El enlace utilizado expiró. Contacte al administrador del sistema.")) 276 277 return render_to_response( 278 'usuario.validar.cuenta.html', { 279 'verificado': verificado, 'emailapp': settings.EMAIL_FROM, 'mensaje': mensaje, 'login_url': login_url 280 }, 281 context_instance=RequestContext(request) 282 ) 121 283 122 284
Nota: Vea TracChangeset
para ayuda en el uso del visor de conjuntos de cambios.