Publicas y privadas

Responder
ramirezosvaldo
Mensajes: 127
Registered for: 3 years 5 months
Mexico

Publicas y privadas

Mensaje por ramirezosvaldo »

Estimado Charly buen dia.

Ayer que estaba solicitando con otros programadores la exposición de un método para recuperar datos generales de clientes,
me cometaron "Si, si la tenemos pero no publica"; entonces me surgió la pregunta con respecto a mercury.

La definición de rutas que tenemos, se puede hacer publica o privada ?

La verdad desconozco los conceptos de publico y privada y su comportamiento en un ámbito MVC.

Agradesco tu ayuda de antemano.

Un abrazo
Saludos
Osvaldo Ramirez

williamL
Mensajes: 20
Registered for: 3 years 4 months
El Salvador

Mensaje por williamL »

Perdona mi ignorancia: a que te refieres con publica y privada?
es a una ip, a una variable o ... "método para recuperar datos generales de clientes ?" de donde los quieres recuperar?
de una dbf, de sql? de un server en la nube?, de un servidor en red local?
Si lograra yo comprender, talvez te podría ayudar? o alguien más.

Saludos

ramirezosvaldo
Mensajes: 127
Registered for: 3 years 5 months
Mexico

Mensaje por ramirezosvaldo »

Gracias mi estimado

Un poco mas de información :

En laravel, si no me equivoco, bajo el esquema MVC, se definién rutas, como por ejemplo

www.misuper.com/clientes >= Te muestra un grid de clientes

Si dicha ruta en el MVC no esta definida, entonces no se puede hacer nada, hasta ahi ?

Ahora, pero que tal si esta definida y el usuario intenta hacer esto :

www.misuper.com/clientes/1 => te daria el cliente numero 1

Pero no quieres que se accede por fuera, pero si quieres usar esto en tu programa de manera interna

localhost/clientes/1

Entonces mi pregunta es: "Como en MVC se le puede decir cual "route" es privada o publica"

No se si pude explicarme poquito mas

Saludos
Osvaldo Ramirez

Cristobal
Site Admin
Mensajes: 315
Registered for: 3 years 6 months
Spain

Mensaje por Cristobal »

Intenta "discriminar" conociendo la IP de origen ( hay alguna variable de entorno que puedes usar: SERVER_ADDR, SERVER_NAME, .... )
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces

williamL
Mensajes: 20
Registered for: 3 years 4 months
El Salvador

Mensaje por williamL »

Osvaldo: talvez yo no sea el más adecuado a contestar tu consulta, pero hice mis prueba en base a los videso de Charly con Mercury, y alli se encuentra una clase con WDO que te maneja MySql con mercury, resida este en un server local o en la nube te la comparto por aqui:

Código: Seleccionar todo

CLASS CustomerModel 

	DATA oDb	

	METHOD New()             		CONSTRUCTOR

	METHOD RowsByState( cState )
	METHOD Count()
	
ENDCLASS

//----------------------------------------------------------------------------//

METHOD New() CLASS CustomerModel

	::oDb := WDO():Rdbms( 'MYSQL', 'localhost', 'harbour', 'password', 'dbharbour', 3306 )

RETU SELF

//	-----------------------------------------------

METHOD RowsByState( cState ) CLASS CustomerModel	

	local aRows	:= {}	
	local hRes
	
	hRes := ::oDb:Query( "select first, last, street from customer where state = '" + cState + "' " )
	aRows := ::oDb:FetchAll( hRes, .t. )
	
RETU aRows

//	-----------------------------------------------

METHOD Count() CLASS CustomerModel	

	local aRows
	local nTotal
	
	hRes := ::oDb:Query( "select count(*) as mytotal from customer" )
	aRow := ::oDb:FetchAll( hRes, .t. )
	
	nTotal := val( aRow[1][ 'mytotal' ]  )

RETU nTotal
Esto se dió cuando explicaba su uso con el ejemplo "go" y si mal no recuerdo con "go.extend".
Además están los ejemplos en el foro con WDO, yo he hecho prueba con MySql tanto con server local y remoto a travez de una IP publica.

Espero que esto te aclare tu situación

Saludos

Avatar de Usuario
charly
Mensajes: 145
Registered for: 3 years 6 months

Mensaje por charly »

Bon dia,

Hablas y separas perfectamente 2 conceptos propios del MVC: Enrutamiento y Autenticacion

1.- Por un lado en el router defines tu ruta que puede ser estática o dinámica. Básicamente se define de esta manera

Una ruta fija o estática:

Código: Seleccionar todo

DEFINE ROUTE 'state'	URL 'state' 	CONTROLLER 'state@sistema.prg'	METHOD 'GET'	OF oApp
Es la que se mas se usa, simplemente defines que cuando se use una ulr /state te ejecute el metodo state del controlador sistema.


Una ruta variable o dinámica

Código: Seleccionar todo

DEFINE ROUTE 'users'	URL 'users/(id)' 	CONTROLLER 'info@users.prg'	METHOD 'GET'	OF oApp
La diferencia estriba en el parámetro definido entre parentesis, que podra ser variable: /users/1, /users/123, ... que enrutara hacia el controlador users ejecutando el metodo info. En el metodo info tu puedes recuperar el parametro id . Creo que ya existe este ejemplo y lo podeis probar.

Hasta aqui el tema enrutamiento. Noy hay ningun misterio, solo conocer que hay estas 2 maneras de definir rutas

2.- Sobre el publico o privado es otra de las piezas que componen el MVC: El middleware.

Esto es una capa que va ligado basicamente al sistema de autenticacion. En Mercury se usa en el metodo New() cuando se define la clase. En ese punto se puede chequear si el peticionario esta autenticado. Si esta autenticado dejará ejecutar el metodo que quiere ejecutar, por ejemplo /users/1 . En el caso de no estar autenticado te echa fuera y no podras ejecutar el método.

Esto lo podeis ver ene el ejemplo app --> src/controller/app/myapp.prg Fijaos n el metodo New() que hace una validacion de autenticacion.


Como veis cada pieza en MVC se encarga de lo suyo. En este caso el enrutamiento se encarga de dirigir hacia el proceso a ejecutar mientras que el middleware se encarga si lo puedes ejecutar :D

Si alguien esta interesado, podemos ver un par de ejemplos y explicaciones pronto en alguna sesion, pero la base esta aqui explicada.
Salutacions, saludos, regards.
Charly

"...programar es fácil, hacer programas es difícil..."

https://httpd2.blogspot.com/
https://forum.modharbour.app

ramirezosvaldo
Mensajes: 127
Registered for: 3 years 5 months
Mexico

Mensaje por ramirezosvaldo »

Estimado Charly

Gracias, y entendido.

Podemos definir que el "public" en general pueda accesar sin autenticación
y los privados, puedan accesar con autenticación.

Me gusto.
Saludos

Avatar de Usuario
charly
Mensajes: 145
Registered for: 3 years 6 months

Mensaje por charly »

Osvaldo,

Tu lo has dicho :D

Yo no he inventado nada. Es un modelo de arquitectura que me limitado a portar. Cuando millones de personas lo usan es por algo, no ? ;) Lo que pasa que requiere su estudio, esto esta claro...


EDITED: Y que conste que hay aun mas "historietas", pero que tampoco quiero que se lie mas el asunto...

C.
Salutacions, saludos, regards.
Charly

"...programar es fácil, hacer programas es difícil..."

https://httpd2.blogspot.com/
https://forum.modharbour.app

Responder