def createIsValid(formCU, oldEmail=None, oldUsuario=None, usuarioSesion=False): ok = True msj = "" if not formCU.validate(): ok = False if (not re.match( r"^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$", request.form['email'])): ok = False formCU.email.errors.append("Ingrese un email válido") else: #valido si existe el email if oldEmail == None or oldEmail != request.form['email']: if User.find_by_email(request.form['email']): ok = False formCU.email.errors.append("El email ya existe") if (not re.match(r"^[a-zA-Z0-9]*$", request.form['usuario'])): ok = False formCU.usuario.errors.append( "Solo puede contener caracteres alfanuméricos") else: #valido si existe el nombre de usuario if oldUsuario == None or oldUsuario != request.form['usuario']: if User.find_by_username(request.form['usuario']): ok = False formCU.usuario.errors.append("El usuario ya existe") if not usuarioSesion and not request.form.getlist("roles"): ok = False msj = "Seleccione al menos un rol" if not ok: raise Exception(msj) return ok
def update(): #Auth check auth.authenticated_or_401() if request.method == "POST": User.db = get_db() if (not User.has_permission(session['id'],'usuario_update')): abort(401) else: post_data = request.get_json() #Obtención de información errors = [] #Errores #Chequeo username if User.find_by_username_not_self(post_data): errors.append({'name': 'username', 'message': 'El nombre de usuario ingresado ya existe'}) #Chequeo email if User.find_by_email_not_self(post_data): errors.append({'name': 'email', 'message': 'El email ingresado ya existe'}) form = forms.ValidateUserWithOutPassword.from_json(post_data, skip_unknown_keys=True) if (form.validate() and len(errors) == 0): User.update(post_data) new_user = User.find_by_email(post_data['email']) update_roles(new_user['user_id'], post_data) response_object = {'status': 'success', 'message': 'Se actualizó el nuevo usuario'} else: if (not form.validate()): err = {'name': 'fields', 'message': 'Verifica los campos obligatorios y no ingreses nombres no permitidos.'} errors.append(err) response_object = errors return jsonify(response_object)
def google_callback(client): User.db = get_db() code = request.args.get("code") google_provider_cfg = requests.get(Config.GOOGLE_DISCOVERY_URL).json() token_endpoint = google_provider_cfg["token_endpoint"] token_url, headers, body = client.prepare_token_request( token_endpoint, authorization_response=request.url, redirect_url=request.base_url, code=code) token_response = requests.post( token_url, headers=headers, data=body, auth=(Config.GOOGLE_CLIENT_ID, Config.GOOGLE_CLIENT_SECRET), ) # Parse the tokens! client.parse_request_body_response(json.dumps(token_response.json())) userinfo_endpoint = google_provider_cfg["userinfo_endpoint"] uri, headers, body = client.add_token(userinfo_endpoint) userinfo_response = requests.get(uri, headers=headers, data=body) # raise Exception(userinfo_response.json()) response = userinfo_response.json() user = User.find_by_email(response["email"]) is_new = False status = True if not user: # google => oeberisso # ------------------------ # given_name => first_name # family_name => last_name # email => email username, dom = response["email"].split('@') User.create_from_google(response["email"], username, response["given_name"], response["family_name"]) msg = "Se creo el usuario" is_new = True if not is_new and status and user["active"] == 0: msg = "El usuario no se encuentra activo." status = False if status: session["user"] = username if is_new else user["username"] if not is_new: msg = "La sesión se inició correctamente." return jsonify({ "status": status, "msg": msg, "username": session["user"], "email": response["email"], })
def authenticate_by_google(user_info): User.db = get_db() user = User.find_by_email(user_info['email']) if not user: User.create_by_google(user_info) user = User.find_by_username(user_info['email']) login(user) return True
def unique_mail(js, field, username=""): User.db = get_db() user = User.find_by_email(field) if user != None and user["username"] != username: if js: return "Este mail ya se encuentra registrado" flash("El mail que intenta utilizar ya existe", "negative") return 1 else: return 0
def create(): #Auth check auth.authenticated_or_401() if request.method == "POST": User.db = get_db() if (not User.has_permission(session['id'],'usuario_new')): abort(401) else: post_data = request.get_json() #Obtención de información errors = [] #Errores #Chequeo username if User.find_by_username(post_data['username']): errors.append({'name': 'username', 'message': 'El nombre de usuario ingresado ya existe'}) #Chequeo email if User.find_by_email(post_data['email']): errors.append({'name': 'email', 'message': 'El email ingresado ya existe'}) #Chequeo passwords if (post_data['password'] != post_data['password_confirm']): errors.append({'name': 'password', 'message': 'Las contraseñas ingresadas no coinciden'}) form = forms.ValidateUser.from_json(post_data, skip_unknown_keys=True) if (form.validate() and len(errors) == 0): #Password hashing password = sha256_crypt.encrypt(post_data['password']) #Creacion de usuario User.create(post_data, password) new_user = User.find_by_email(post_data['email']) update_roles(new_user['user_id'], post_data) response_object = {'status': 'success', 'message': 'Se agregó el nuevo usuario'} else: if (not form.validate()): err = {'name': 'fields', 'message': 'Verifica los campos obligatorios y no ingreses nombres no permitidos.'} errors.append(err) response_object = errors return jsonify(response_object)
def store(): if not authenticated(session): abort(401) #Chequea permiso User.db = get_db() if (User.tiene_permiso(session['id'], 'usuario_new')): if request.method == "POST" and forms.ValidateUser( request.form).validate(): if (request.form['password'] != request.form['password_repeat']): flash('Las contraseñas no coinciden', 'error') #verifica los roles enviados elif (request.form.get("rol1") == None) and (request.form.get("rol2") == None) and (request.form.get("rol3") == None): flash('Debes elegir al menos un rol de usuario', 'error') #Chequea la existencia del usuario elif User.find_by_username(request.form['username']): flash("Ya existe un usuario con ese nombre de usuario", 'error') elif User.find_by_email(request.form['email']): flash("Ya existe un usuario con ese email", 'error') else: User.create(request.form) user = User.find_by_email_and_pass(request.form['email'], request.form['password']) if request.form.get("rol1") != None: User.set_role(user['id'], 1) if request.form.get("rol2") != None: User.set_role(user['id'], 2) if request.form.get("rol3") != None: User.set_role(user['id'], 3) flash("Usuario agregado correctamente", 'success') else: flash( 'Verifica los campos obligatorios. No ingreses valores no permitidos', 'error') return redirect(url_for('panel_usuarios')) else: abort(401)
def create(): if not authenticated(session): abort(401) page = request.args.get('pagina') permisos = User.misPermisos(session['id']) Configuracion.db = get_db() config = Configuracion.all() data = request.form Estudiante.db = get_db() estudiante = Estudiante.find_by_documento(data['numero_doc']) User.db = get_db() user = User.find_by_email(data['email']) userDoc = User.find_by_documento(data['numero_doc']) users = User.all(page, config['paginacion']) rango = User.rangoAll(config['paginacion']) if validateCreateUser(data) == False: flash("Todos los campos son obligatorios.") return redirect(url_for('user_new', user=user)) if user: flash("El email ya existe.") return redirect(url_for('user_new', user=user)) if estudiante: flash("El documento ya existe.") return redirect(url_for('user_new', user=user)) if userDoc: flash("El documento ya existe.") return redirect(url_for('user_new', user=user)) User.create(data) #agarro los datos del formulario return redirect(url_for('user_index', pagina=0))