Exemplo n.º 1
0
 def remover_favorito(self):
     #return Utils.nice_json({labels.lbl_stts_success:labels.FVRTO_BRRDO}, 200)
     key = request.headers['Authorization']
     if key:
         validacionSeguridad.ValidacionToken(key)
         if validacionSeguridad:
             token = Pconnection.querySelect(
                 dbConf.DB_SHMA + '.tbgestion_accesos', "token",
                 "key='" + key + "' and estdo is true")[0]
             tmp_data = jwt.decode(token["token"],
                                   conf.SS_TKN_SCRET_KEY + key, 'utf-8')
             datosUsuario = validacionSeguridad.ObtenerDatosUsuario(
                 tmp_data['lgn'])[0]
             id_lgn_prfl_scrsl = validacionSeguridad.validaUsuario(
                 tmp_data['lgn'])
             ld_id_mnu_ge = request.form['id_mnu_ge']
             #busco el favorito
             lo_current = self.busca_favorito(
                 id_lgn_prfl_scrsl['id_prfl_scrsl'], ld_id_mnu_ge)
             arrayValues = {}
             arrayValues['estdo'] = 'false'
             Pconnection.queryUpdate(dbConf.DB_SHMA + '.tbfavoritosmenu',
                                     arrayValues,
                                     'id=' + str(lo_current['id']))
             return Utils.nice_json(
                 {labels.lbl_stts_success: labels.FVRTO_BRRDO}, 200)
         else:
             return Utils.nice_json(
                 {labels.lbl_stts_error: errors.ERR_NO_SN_PRMTRS}, 400)
     else:
         return Utils.nice_json(
             {labels.lbl_stts_error: errors.ERR_NO_SN_PRMTRS}, 400)
Exemplo n.º 2
0
    def actualizarContrenaInterna(self):
        lc_clve_actl = request.form['clve_tmprl']
        lc_nva_cntrsna = request.form['nva_cntrsna']
        lc_rnva_cntrsna = request.form['rnva_cntrsna']
        ld_fcha_actl = time.ctime()

        ####lc_clve_actl = hashlib.md5(lc_clve_actl.encode('utf-8')).hexdigest()
        lc_id_lgn_ge = request.form['id_lgn_ge']
        '''
            Validaa nueva contrasena y la clave temporal tiene que ser iguales
        '''
        if lc_nva_cntrsna != lc_rnva_cntrsna:
            return Utils.nice_json(
                {labels.lbl_stts_error: errors.ERR_NO_CNCD_CNTSNA}, 400)
        '''
            Validar que la contrasena cumpla con el Patron de contraseas
        '''
        if not re.match(conf.EXPRESION_CLAVE_USUARIO, lc_nva_cntrsna):
            return Utils.nice_json(
                {labels.lbl_stts_error: errors.ERR_NO_PTRN_CLVE}, 400)

        lc_nva_cntrsna = hashlib.md5(
            lc_nva_cntrsna.encode('utf-8')).hexdigest()
        lc_clve_actl = hashlib.md5(lc_clve_actl.encode('utf-8')).hexdigest()
        '''
            Actualizar el usuario si coincide con la contraseña actual que ingreso
        '''
        lc_query_usro = " select "\
                             " b.id as id_lgn_ge, "\
                             " a.id as id_lgn "\
                            " from "\
                             " "+dbConf.DB_SHMA+".tblogins a "\
                            " inner join "+dbConf.DB_SHMA+".tblogins_ge b on "\
                             " a.id = b.id_lgn "\
                            " where "\
                             " b.id = "+lc_id_lgn_ge+" "\
                             " and cntrsna = '"+lc_clve_actl+"' LIMIT 1 "
        Cursor_clv_tmp2 = lc_cnctn.queryFree(lc_query_usro)

        if Cursor_clv_tmp2:
            data_usro = json.loads(json.dumps(Cursor_clv_tmp2[0], indent=2))

            #Actualiza login
            la_clmns_actlzr_lgn = {}
            la_clmns_actlzr_lgn['id'] = str(data_usro['id_lgn'])
            la_clmns_actlzr_lgn['cntrsna'] = str(lc_nva_cntrsna)
            self.UsuarioActualizaRegistro(la_clmns_actlzr_lgn, 'tblogins')

            la_clmns_actlzr_lgn_ge = {}
            la_clmns_actlzr_lgn_ge['id'] = str(data_usro['id_lgn_ge'])
            la_clmns_actlzr_lgn_ge['fcha_mdfccn'] = str(ld_fcha_actl)
            la_clmns_actlzr_lgn_ge['cmbo_cntrsna'] = 'false'
            self.UsuarioActualizaRegistro(la_clmns_actlzr_lgn_ge,
                                          'tblogins_ge')

            return Utils.nice_json({labels.lbl_stts_success: True}, 200)
        else:
            return Utils.nice_json(
                {labels.lbl_stts_error: errors.ERR_NO_CNTRSNA_INVLDA}, 400)
Exemplo n.º 3
0
    def listar(self):
        ln_opcn_mnu = request.form["id_mnu_ge_opt"]
        ln_id_grpo_emprsrl = request.form["id_grpo_emprsrl"]
        key = request.headers['Authorization']
        validacionSeguridad = ValidacionSeguridad()
        lb_val = validacionSeguridad.Principal(key, ln_opcn_mnu,
                                               optns.OPCNS_MNU['Optmenu'])
        a_prmtrs = {}
        lc_prmtrs = ''
        try:
            a_prmtrs['ordn'] = request.form['ordn']
            lc_ordn = a_prmtrs['ordn']
            lc_prmtrs += "  and a.ordn like '%" + lc_ordn + "%'"
        except:
            pass
        try:
            a_prmtrs['dscrpcn'] = request.form['dscrpcn']
            lc_dscrpcn = a_prmtrs['dscrpcn']
            lc_prmtrs += "  and a.dscrpcn like '%" + lc_dscrpcn + "%' "
        except:
            pass

        try:
            a_prmtrs['id_mnu_ge'] = request.form['id_mnu_ge']
            ln_id_prgnta_ge = a_prmtrs['id_mnu_ge']
            lc_prmtrs += "  and b.id = '" + ln_id_prgnta_ge + "'"
        except:
            pass

        if lb_val:

            StrSql = " select "\
                                " a.id_mnu as parent,"\
                                " b.id,"\
                                " a.ordn,"\
                                " a.dscrpcn,"\
                                "a.lnk,"\
                                " case when a.estdo = true then 'ACTIVO' else 'INACTIVO' end as estdo"\
                                " from "\
                                " "+str(dbConf.DB_SHMA)+".tbmenu a inner join "+str(dbConf.DB_SHMA)+".tbmenu_ge b on "\
                                " a.id=b.id_mnu "\
                                " where "\
                                " b.estdo = true and id_grpo_emprsrl = "+ln_id_grpo_emprsrl+" "\
                                + str(lc_prmtrs)
            print(StrSql)
            Cursor = Pconnection.queryFree(StrSql)
            if Cursor:
                data = json.loads(json.dumps(Cursor, indent=2))
                return Utils.nice_json(data, 200)
            else:
                return Utils.nice_json(
                    {labels.lbl_stts_error: errors.ERR_NO_RGSTRS}, 400)
        else:
            return Utils.nice_json(
                {labels.lbl_stts_error: errors.ERR_NO_ATRZCN}, 400)
Exemplo n.º 4
0
 def claveTemporal(self):
     lc_crro_crprtvo = request.form['crro_crprtvo']
     lc_query_clv_tmp = "select id from ( "\
                                 " select "\
                                 " case when emplds_une.id is not null then "\
                                 " emplds.crro_elctrnco "\
                                 " else "\
                                 " prstdr.crro_elctrnco "\
                                 " end as crro_elctrnco, "\
                                 " lgn_ge.id "\
                                 " from "+dbConf.DB_SHMA+".tblogins_ge lgn_ge "\
                                 " left join "+dbConf.DB_SHMA+".tblogins lgn on lgn.id = lgn_ge.id_lgn "\
                                 " left join "+dbConf.DB_SHMA+".tbempleados_une emplds_une on emplds_une.id_lgn_accso_ge = lgn_ge.id "\
                                 " left join "+dbConf.DB_SHMA+".tbempleados emplds on emplds.id = emplds_une.id_empldo "\
                                 " left join "+dbConf.DB_SHMA+".tbprestadores prstdr on prstdr.id_lgn_accso_ge = lgn_ge.id "\
                                 " left join "+dbConf.DB_SHMA+".tbcargos_une crgo_une on crgo_une.id = emplds_une.id_crgo_une "\
                                 " left join "+dbConf.DB_SHMA+".tbcargos crgo on crgo.id = crgo_une.id_crgo "\
                                 " left join "+dbConf.DB_SHMA+".tbunidades_negocio undd_ngco on undd_ngco.id = emplds_une.id_undd_ngco "\
                                 " inner join "+dbConf.DB_SHMA+".tblogins_perfiles_sucursales as prfl_scrsls on prfl_scrsls.id_lgn_ge = lgn_ge.id and prfl_scrsls.mrca_scrsl_dfcto is true "\
                                 " inner join "+dbConf.DB_SHMA+".tbperfiles_une as prfl_une on prfl_une.id = prfl_scrsls.id_prfl_une "\
                                 " where id_mtvo_rtro_une is null) as test "\
                                 " where crro_elctrnco ='"+lc_crro_crprtvo+"'"
     Cursor_clv_tmp = lc_cnctn.queryFree(lc_query_clv_tmp)
     if Cursor_clv_tmp:
         data = json.loads(json.dumps(Cursor_clv_tmp[0], indent=2))
         #se inserta en la tabla para posterior validacion
         arrayValues = {}
         #Se genera la keyword
         key = str(data['id']) + str(random.randint(1, 100000))
         key = hashlib.md5(key.encode('utf-8')).hexdigest()
         ld_fcha_actl = time.ctime()
         clave_tmp = Utils.aleatoria_n_digitos(8)
         arrayValues['cntrsna'] = str(clave_tmp)
         IpUsuario = IP(socket.gethostbyname(socket.gethostname()))
         arrayValues['ip'] = str(IpUsuario)
         device = Utils.DetectarDispositivo(
             request.headers.get('User-Agent'))
         arrayValues['dspstvo_accso'] = str(device)
         arrayValues['crreo_slctnte'] = str(lc_crro_crprtvo)
         arrayValues['fcha_mdfccn '] = str(ld_fcha_actl)
         arrayValues['id_lgn_ge '] = str(data['id'])
         arrayValues['token'] = str(key)
         arrayValues['estdo'] = str('true')
         lc_cnctn.queryInsert(dbConf.DB_SHMA + ".tbclaves_tmp", arrayValues)
         return Utils.nice_json(
             {
                 labels.lbl_stts_success:
                 'Redireccionando Espera un Momento...',
                 "tkn": key
             }, 200)
     else:
         return Utils.nice_json(
             {labels.lbl_stts_error: errors.ERR_NO_CRRO_SSTMA}, 400)
Exemplo n.º 5
0
    def preguntasSeguridad(self):
        lc_token = request.form['lc_token']
        ## Debe existir en la base de datos el token generado, me rotorna el id del login del usuario y si no existe, retorna error
        ## Consulto 3 preguntas aleatorias de las que se encuentran parametrizadas de acuerdo al id_lgns_ssn si tiene menos de 3
        ## si existen, retorno las preguntas con su id preguntas, devuelve un error

        Cursor = lc_cnctn.queryFree("select "\
                     " id_lgn_ge "\
                     "from "\
                     ""+dbConf.DB_SHMA+".tbclaves_tmp "\
                     "where "\
                     "token = '"+lc_token+"' "\
                     "and estdo = true LIMIT 1 ")
        if Cursor:
            data = json.loads(json.dumps(Cursor[0], indent=2))

            ##Se valida que existan 6 preguntas parametrizadas
            lc_query_cnt = " select count(a.id) as ttl from "+dbConf.DB_SHMA+".tbrespuestas_preguntas_seguridad a "\
                                " inner join "+dbConf.DB_SHMA+".tbpreguntas_seguridad_ge b on a.id_prgnt_sgrdd_ge = b.id "\
                                " inner join "+dbConf.DB_SHMA+".tbpreguntas_seguridad c on b.id_prgnta_sgrdd = c.id "\
                                " where a.id_lgn_accso_ge = "+str(data['id_lgn_ge'])+" and a.estdo = true LIMIT 1 "
            Cursor3 = lc_cnctn.queryFree(lc_query_cnt)
            if Cursor3:
                data3 = json.loads(json.dumps(Cursor3[0], indent=2))
                ln_ttl = data3['ttl']
            else:
                ln_ttl = 0

            if (ln_ttl < 6):
                return Utils.nice_json(
                    {
                        labels.lbl_stts_error:
                        "No se han definido las 6 preguntas de seguridad, comuníquese  con el administrador del sistema."
                    }, 400)

            lc_query_rndm = " select a.id, c.dscrpcn from "+dbConf.DB_SHMA+".tbrespuestas_preguntas_seguridad a "\
                                " inner join "+dbConf.DB_SHMA+".tbpreguntas_seguridad_ge b on a.id_prgnt_sgrdd_ge = b.id "\
                                " inner join "+dbConf.DB_SHMA+".tbpreguntas_seguridad c on b.id_prgnta_sgrdd = c.id "\
                                " where a.id_lgn_accso_ge = "+str(data['id_lgn_ge'])+" and a.estdo = true "\
                                " order by random() limit 3 "
            Cursor2 = lc_cnctn.queryFree(lc_query_rndm)
            if Cursor2:
                data2 = json.loads(json.dumps(Cursor2, indent=2))
                return Utils.nice_json(data2, 200)
        else:
            return Utils.nice_json(
                {labels.lbl_stts_error: "La cadena Token no es valida."}, 400)
Exemplo n.º 6
0
    def listar(self):

        #key = request.headers['Authorization']
        #validacionSeguridad = ValidacionSeguridad()

        lc_rsltdo = requests.post('http://127.0.0.1:5001/api/contratos/listar',
                                  data=request.form)
        return Utils.nice_json(lc_rsltdo.json(), 200)
Exemplo n.º 7
0
 def validaclaveTemporal(self):
     lc_clve_tmprl = request.form['clve_tmprl']
     lc_query = "select "\
     "estdo, "\
     "crreo_slctnte "\
     "from "\
     ""+dbConf.DB_SHMA+".tbclaves_tmp "\
     "where "\
     "current_timestamp - fcha_crcn < INTERVAL '30' minute "\
     "and estdo = true "\
     "and cntrsna ='"+lc_clve_tmprl+"'"
     Cursor = lc_cnctn.queryFree(lc_query)
     if Cursor:
         data_vlda = json.loads(json.dumps(Cursor[0], indent=2))
         if data_vlda['estdo']:
             return Utils.nice_json({labels.lbl_stts_success: True}, 200)
         else:
             return Utils.nice_json(
                 {labels.lbl_stts_error: errors.ERR_NO_CLVE_TMP}, 400)
     else:
         return Utils.nice_json(
             {labels.lbl_stts_error: errors.ERR_NO_CLVE_TMP}, 400)
Exemplo n.º 8
0
    def reponderPreguntasSeguridad(self):
        lc_token = request.form['token']
        ln_prgnta_0 = request.form['txt_idpr0']
        ln_prgnta_1 = request.form['txt_idpr1']
        ln_prgnta_2 = request.form['txt_idpr2']
        lc_rspsta_0 = request.form['txt_pregunta0']
        lc_rspsta_0 = hashlib.md5(lc_rspsta_0.encode('utf-8')).hexdigest()
        lc_rspsta_1 = request.form['txt_pregunta1']
        lc_rspsta_1 = hashlib.md5(lc_rspsta_1.encode('utf-8')).hexdigest()
        lc_rspsta_2 = request.form['txt_pregunta2']
        lc_rspsta_2 = hashlib.md5(lc_rspsta_2.encode('utf-8')).hexdigest()

        ## Obtengo el id delusuario de acuerdo al token
        lc_query_clve_tmp = " select id, id_lgn_ge, crreo_slctnte, cntrsna from " + dbConf.DB_SHMA + ".tbclaves_tmp where token = '" + lc_token + "' and estdo = true limit 1;"
        Cursor_clve_tmp = lc_cnctn.queryFree(lc_query_clve_tmp)
        if Cursor_clve_tmp:
            data_tkn = json.loads(json.dumps(Cursor_clve_tmp[0], indent=2))
            id_lgn_ge = data_tkn['id_lgn_ge']
            id_claves_tmp = data_tkn['id']
            lc_crro_slctnte = data_tkn['crreo_slctnte']
            lc_cntrsna = data_tkn['cntrsna']
        else:
            return Utils.nice_json(
                {labels.lbl_stts_error: "La cadena Token no es valida."}, 400)

        ## Validar la cantidad de intentos
        #validamos que no tenga una clave temporal ya generada al menos 3 intentos en 30 min
        lc_query = "select "\
                     "count(estdo) as count "\
                     "from "\
                     ""+dbConf.DB_SHMA+".tbclaves_tmp "\
                     "where "\
                     "current_timestamp - fcha_crcn < INTERVAL '30' minute "\
                     "and estdo = true "\
                     "and crreo_slctnte ='"+lc_crro_slctnte+"'"
        Cursor = lc_cnctn.queryFree(lc_query)
        if Cursor:
            data_vlda = json.loads(json.dumps(Cursor[0], indent=2))
            if data_vlda['count'] >= 3:
                return Utils.nice_json(
                    {
                        labels.lbl_stts_error:
                        'Se han realizado 3 intentos en los ultimos minutos, intentalo más tarde'
                    }, 400)

        ## Valido que la respuesta sea la misma que tiene parametrizada en la tabla de respuestas
        ## Las 3 respuestas exitosas, retornan un True
        if self.validaPreguntaSeguridad(
                id_lgn_ge, ln_prgnta_0,
                lc_rspsta_0) == True and self.validaPreguntaSeguridad(
                    id_lgn_ge, ln_prgnta_1,
                    lc_rspsta_1) == True and self.validaPreguntaSeguridad(
                        id_lgn_ge, ln_prgnta_2, lc_rspsta_2) == True:

            ## Activo el registro de la clave temporal de acuerdo al tocken si las 3 preguntas son exitosas
            ld_fcha_actl = time.ctime()
            la_clmns_actlzr_rps = {}
            la_clmns_actlzr_rps['id'] = str(id_claves_tmp)
            la_clmns_actlzr_rps['estdo'] = 'true'
            la_clmns_actlzr_rps['fcha_mdfccn'] = str(ld_fcha_actl)
            self.UsuarioActualizaRegistro(la_clmns_actlzr_rps, 'tbclaves_tmp')

            ##consultar login y numero de cel para los mensajes
            lc_query_lgn = " select lgn, tlfno_cllr, id from ( "\
                                " select "\
                                " case when emplds_une.id is not null then "\
                                " trim(emplds.tlfno_cllr) "\
                                " else "\
                                " trim(prstdr.tlfno_cllr) "\
                                " end as tlfno_cllr, "\
                                " lgn.lgn, lgn_ge.id "\
                                " from "+dbConf.DB_SHMA+".tblogins_ge lgn_ge "\
                                " left join "+dbConf.DB_SHMA+".tblogins lgn on lgn.id = lgn_ge.id_lgn "\
                                " left join "+dbConf.DB_SHMA+".tbempleados_une emplds_une on emplds_une.id_lgn_accso_ge = lgn_ge.id "\
                                " left join "+dbConf.DB_SHMA+".tbempleados emplds on emplds.id = emplds_une.id_empldo "\
                                " left join "+dbConf.DB_SHMA+".tbprestadores prstdr on prstdr.id_lgn_accso_ge = lgn_ge.id "\
                                " left join "+dbConf.DB_SHMA+".tbcargos_une crgo_une on crgo_une.id = emplds_une.id_crgo_une "\
                                " left join "+dbConf.DB_SHMA+".tbcargos crgo on crgo.id = crgo_une.id_crgo "\
                                " left join "+dbConf.DB_SHMA+".tbunidades_negocio undd_ngco on undd_ngco.id = emplds_une.id_undd_ngco "\
                                " inner join "+dbConf.DB_SHMA+".tblogins_perfiles_sucursales as prfl_scrsls on prfl_scrsls.id_lgn_ge = lgn_ge.id and prfl_scrsls.mrca_scrsl_dfcto is true "\
                                " inner join "+dbConf.DB_SHMA+".tbperfiles_une as prfl_une on prfl_une.id = prfl_scrsls.id_prfl_une "\
                                " where id_mtvo_rtro_une is null) as test "\
                                " where id = "+str(id_lgn_ge)+" LIMIT 1 "
            Cursor_lgn = lc_cnctn.queryFree(lc_query_lgn)
            if Cursor_lgn:
                data_lgn = json.loads(json.dumps(Cursor_lgn[0], indent=2))
                lc_lgn = data_lgn['lgn']
                ln_cllr = data_lgn['tlfno_cllr']

                ## Cuando retorne 200, entonces se genera el proceso que habia anteriormente, que envia por sms y correo electronico y redireccoina a ingresar codigo de seguridad
                asunto = "Clave Temporal de Acceso Higia SSI"
                mensaje =   "Cordial saludo "+lc_lgn+","\
                            "<p>La clave temporal auto generada por el sistema estará vigente por 30 minutos</p>"\
                            "<br>"\
                            "<b>Clave Generada:</b>"+str(lc_cntrsna)

                correo.enviarCorreo(lc_crro_slctnte, asunto, mensaje)

                #ENVIO DEL CODIGO POR MENSAJE DE TEXTO
                lc_sms = "La clave temporal generada por el sistema estará vigente por 30 minutos. Clave Generada:" + str(
                    lc_cntrsna)
                #lc_sms = lc_sms.replace(" ", "+")
                lc_stts_web_srvcs_SMS = Utils.webServiceSMS(
                    conf.URL_WS_SMS, ln_cllr, lc_sms, conf.LGN_USRO_WS_SMS,
                    conf.CNTRSNA_USRO_WS_SMS)
                return Utils.nice_json(
                    {
                        labels.lbl_stts_success:
                        'Clave Temporal Generada con Exito! Redireccionando Espera un Momento...'
                    }, 200)
        else:
            return Utils.nice_json(
                {
                    labels.lbl_stts_error:
                    "Error en una respuesta de las preguntas de seguridad"
                }, 400)
Exemplo n.º 9
0
    def ActualizarUsuario(self):
        lc_tkn = request.headers['Authorization']
        ld_fcha_actl = time.ctime()
        ln_opcn_mnu = request.form["id_mnu_ge"]
        lc_estdo = request.form["estdo"]
        la_clmns_actlzr = {}
        md5 = hashlib.md5(request.form['password'].encode('utf-8')).hexdigest()
        '''
            Validar que la contrasena cumpla con el Patron de contraseas, excepto que tenga el campo vacio, mientras el estado sea ACTIVO
        '''

        if request.form['password']:
            if not request.form['password'] == "undefined":
                ##Llega aquí cuando tiene datos
                if not re.match(conf.EXPRESION_CLAVE_USUARIO,
                                request.form['password']):
                    return Utils.nice_json(
                        {labels.lbl_stts_error: errors.ERR_NO_PTRN_CLVE}, 400)
                else:
                    la_clmns_actlzr['cntrsna'] = md5

        validacionSeguridad = ValidacionSeguridad()
        val = validacionSeguridad.Principal(lc_tkn, ln_opcn_mnu,
                                            optns.OPCNS_MNU['Usuarios'])
        #Validar los campos requeridos.
        u = ActualizarAcceso(request.form)
        if not u.validate():
            return Utils.nice_json({labels.lbl_stts_error: u.errors}, 400)
        if val:
            '''
                INSERTAR DATOS
            '''

            la_clmns_actlzr_ge = {}
            #Actualizo tabla ge
            la_clmns_actlzr_ge['id'] = request.form['id_login_ge']
            la_clmns_actlzr_ge['fcha_mdfccn'] = str(ld_fcha_actl)
            la_clmns_actlzr_ge['id_grpo_emprsrl'] = request.form[
                'id_grpo_emprsrl']
            la_clmns_actlzr_ge['estdo'] = lc_estdo
            la_clmns_actlzr['lgn'] = request.form['login']

            la_clmns_actlzr['nmbre_usro'] = request.form['nombre_usuario']
            '''
            Validar repetidos
            '''
            lc_tbls_query = dbConf.DB_SHMA + ".tblogins_ge a INNER JOIN " + dbConf.DB_SHMA + ".tblogins b on a.id_lgn=b.id "
            CursorValidar = lc_cnctn.querySelect(
                lc_tbls_query, ' b.id ',
                " a.id <> " + str(la_clmns_actlzr_ge['id']) +
                " AND b.lgn = '" + str(la_clmns_actlzr['lgn']) + "' ")
            if CursorValidar:
                return Utils.nice_json(
                    {
                        labels.lbl_stts_error:
                        labels.lbl_lgn + " " + errors.ERR_RGSTRO_RPTDO
                    }, 400)
            '''
            Insertar en la tabla auxiliar y obtener id de creacion
            '''
            self.UsuarioActualizaRegistro(la_clmns_actlzr_ge, 'tblogins_ge')
            #obtengo id_lgn a partir del id_lgn_ge
            Cursor = lc_cnctn.querySelect(
                dbConf.DB_SHMA + '.tblogins_ge', 'id_lgn',
                "id=" + str(la_clmns_actlzr_ge['id']))
            if Cursor:
                data = json.loads(json.dumps(Cursor[0], indent=2))
                ln_id_lgn = data['id_lgn']
            #Actualizo tabla principal
            la_clmns_actlzr['id'] = ln_id_lgn

            if request.files:
                '''
                Guardar la imagen en la ruta especificada
                '''
                lc_nmbre_imgn = str(
                    hashlib.md5(str(la_clmns_actlzr['id']).encode(
                        'utf-8')).hexdigest()) + '.jpg'
                la_grdr_archvo = self.GuardarArchivo(request.files, 'imge_pth',
                                                     conf.SV_DIR_IMAGES,
                                                     lc_nmbre_imgn, True)
                if la_grdr_archvo['status'] == 'error':
                    return Utils.nice_json(
                        {labels.lbl_stts_error: la_grdr_archvo['retorno']},
                        400)
                else:
                    la_clmns_actlzr['fto_usro'] = str(
                        la_grdr_archvo["retorno"])

            #ACTUALIZACION TABLA LOGINS OK
            self.UsuarioActualizaRegistro(la_clmns_actlzr, 'tblogins')
            return Utils.nice_json(
                {labels.lbl_stts_success: labels.SCCSS_ACTLZCN_EXTSA}, 200)
            '''
                FIN INSERTAR DATOS
            '''
        else:
            return Utils.nice_json(
                {labels.lbl_stts_error: errors.ERR_NO_ATRZCN}, 400)
Exemplo n.º 10
0
    def InsertarUsuarios(self):
        lc_tkn = request.headers['Authorization']
        ld_fcha_actl = time.ctime()
        ln_opcn_mnu = request.form["id_mnu_ge"]
        validacionSeguridad = ValidacionSeguridad()
        val = validacionSeguridad.Principal(lc_tkn, ln_opcn_mnu,
                                            optns.OPCNS_MNU['Usuarios'])
        '''
            Validar que la contrasena cumpla con el Patron de contraseas
        '''
        if not re.match(conf.EXPRESION_CLAVE_USUARIO,
                        request.form['password']):
            return Utils.nice_json(
                {labels.lbl_stts_error: errors.ERR_NO_PTRN_CLVE}, 400)

        lc_cntrsna = hashlib.md5(
            request.form['password'].encode('utf-8')).hexdigest()
        #Validar los campos requeridos.
        u = AcInsertarAcceso(request.form)
        if not u.validate():
            return Utils.nice_json({labels.lbl_stts_error: u.errors}, 400)
            #Utils.nice_json({labels.lbl_stts_success:labels.SCCSS_ACTLZCN_EXTSA},200)

        if val:
            '''
                Aqui insertamos los datos del usuario
            '''
            la_clmns_insrtr = {}
            la_clmns_insrtr_ge = {}
            la_clmns_insrtr['lgn'] = request.form['login']
            la_clmns_insrtr[
                'cntrsna'] = lc_cntrsna  #pendiente encriptar la contrase�a
            la_clmns_insrtr['nmbre_usro'] = request.form['nombre_usuario']
            la_clmns_insrtr_ge['fcha_crcn'] = str(ld_fcha_actl)
            la_clmns_insrtr_ge['fcha_mdfccn'] = str(ld_fcha_actl)
            la_clmns_insrtr_ge['id_grpo_emprsrl'] = request.form[
                'id_grpo_emprsrl']
            '''
                Validar repetidos
            '''
            lc_tbls_query = dbConf.DB_SHMA + ".tblogins_ge a INNER JOIN " + dbConf.DB_SHMA + ".tblogins b on a.id_lgn=b.id "
            CursorValidar = lc_cnctn.querySelect(
                lc_tbls_query, ' b.id ',
                " b.lgn = '" + str(la_clmns_insrtr['lgn']) + "' ")
            if CursorValidar:
                return Utils.nice_json(
                    {
                        labels.lbl_stts_error:
                        labels.lbl_lgn + " " + errors.ERR_RGSTRO_RPTDO
                    }, 400)

            ln_id_lgn = self.UsuarioInsertaRegistro(la_clmns_insrtr,
                                                    'tblogins')
            la_clmns_insrtr_ge['id_lgn'] = str(ln_id_lgn)
            lc_nmbre_imgn = str(
                hashlib.md5(
                    str(ln_id_lgn).encode('utf-8')).hexdigest()) + '.jpg'

            if request.files:
                la_grdr_archvo = self.GuardarArchivo(request.files, 'imge_pth',
                                                     conf.SV_DIR_IMAGES,
                                                     lc_nmbre_imgn, True)
                if la_grdr_archvo['status'] == 'error':
                    return Utils.nice_json(
                        {labels.lbl_stts_error: la_grdr_archvo['retorno']},
                        400)
                else:
                    la_clmns_insrtr['fto_usro'] = str(
                        la_grdr_archvo["retorno"])
            '''
                Actualizo el registro con el nombre de la imagen
            '''
            la_clmns_insrtr['id'] = str(ln_id_lgn)
            self.UsuarioActualizaRegistro(la_clmns_insrtr, 'tblogins')
            '''
                Inserto la relacion en la tabla GE
            '''
            self.UsuarioInsertaRegistro(la_clmns_insrtr_ge, 'tblogins_ge')
            '''
                obtengo id_lgn a partir del id_lgn_ge y se lo retorno al success
            '''
            Cursor = lc_cnctn.queryFree(
                "select id from " + dbConf.DB_SHMA +
                ".tblogins_ge order by id desc limit 1")
            if Cursor:
                data = json.loads(json.dumps(Cursor[0], indent=2))
                ln_id_lgn_ge = data['id']

            return Utils.nice_json(
                {
                    labels.lbl_stts_success: labels.SCCSS_RGSTRO_EXTSO,
                    "id": ln_id_lgn_ge
                }, 200)
            '''
                Fin de la insercion de los datos
            '''
        else:
            return Utils.nice_json(
                {labels.lbl_stts_error: errors.ERR_NO_ATRZCN}, 400)