Opiniones sobre este esquema funcional

Estoy iniciando una aplicación y ahora estoy definiendo ¿como hacer que los usuarios del Front tengan acceso sólo a sus datos?, quizá esta pregunta es más de Base de Datos pero pregunto por que seguramente ustedes tiene más experiencia en como manejar este panorama.

Lo que estoy pensando hacer es agregar un campo a cada una de las tablas que identifique los datos de un cliente, lo he llamado account_pin.

No estoy usando el ID de usuario por que en realidad un usuario del Front debe poder crear más usuarios que tengan acceso y ver o crear más datos, todos relacionados al mismo account_pin.

Desde el Back yo voy a poder crear las cuentas de mis clientes (Accounts), al crear una cuenta se crea un PIN para esa cuenta basado en este código que asegura una cadena de 32 caracteres, aleatoria y única:




public function generateUniqueRandomString($attribute, $length = 32)

{

    $randomString = Yii::$app->getSecurity()

        >generateRandomString($length);


    if(!$this>findOne([$attribute => $randomString]))

            return $randomString;

    else

        return $this->generateUniqueRandomString($attribute, $length);

}



Fuente: http://www.jamesbarnsley.com/site/2016/04/25/generating-a-unique-random-string-for-model-properties-in-yii2/

Ya creada la cuenta y definido el PIN, se crea un usuario para el Front ligado a ese PIN y de ahí en adelante todos los datos creados por ese usuario o los usuarios que ese usuario cree se identifican con el PIN.

¿Cómo ven?, ¿qué opinan?

Saldos a todos.

Buenas.

No entiendo que tiene que ver esto para no poder relacionar los datos de un usuario con su identificador. Lo que deberías es relacionar todos los datos de un usuario con su identificador.

En tus vistas muestras los datos respecto al "id" de usuario y listo (por ejemplo cargar un "gridview" desde una función "search" de un modelo al que se le pase el parámetro "id", que se recogería por ejemplo de la sesión).

Un saludo.

Por que varios usuarios van a compartir datos, es decir, a los datos de una empresa (cuenta) van a tener acceso varios usuarios; yo al crear la cuenta desde el back voy a crear un usuario inicial para el front que será el que va a poder crear más usuarios que el requiera para poder usar el front todos relacionados con la cuenta por medio de account_pin.

¿está muy loco?

Saludos y gracias por el comentario.

Hola!

Entonces en ese caso lo que debes hacer es crear una tabla empresas y relacionar a cada usuario con su empresa a través de empresaId.

Después si un usuario puede crear a su vez otros usuarios solo es asignarle el id de la empresa en cuestión, y si necesitas saber qué usuario ha creado a otro se trata de crear otro campo usuarioPadreId.

No especificas si son usuarios del mismo modelo, o clientes o de qué se trata…

El uso de códigos alfanuméricos únicos es válido pero debe estar justificado, o sea debes hacerlo por algún motivo, y normalmente eso solo se hace para tareas de autenticación/validación, por ejemplo para la típica confirmación de emails a través de la url.