📄User Smart Contract

Este contrato almacena dos cosas diferentes:

Data del usuario

Esta es una forma on-chain de almacenar información básica del usuario (nombre, biografía, redes sociales, foto). No es obligatorio, es solo otra opción. El usuario puede optar por usar diferentes fuentes para mostrar su información (es decir, ENS, NFTs, LinkedIn u otras fuentes on-chain u off-chain).

Estructura

struct UserInfo {
    address user;
    string name;
    string bio;
    string[] networkLinks;
    string profilePicture;
    string moreInfoLink;
}  

Ejemplo:

{
  "user": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
  "name": "John Doe",
  "bio": "I am a developer with 5 years of experience...",
  "networkLinks": [
    "twitter.com/johndoe",
    "linkedin.com/in/johndoe"
  ],
  "profilePicture": "https://i.pravatar.cc/300",
  "moreInfoLink": "ipfs://ipfs.io/XXXXXXX"
}

Permisos

Los permisos son una herramienta que permite al usuario delegar en un operador la capacidad de registrar un registro en su nombre. Esto es necesario si el usuario desea utilizar la API de Prutopia o eventualmente otra herramienta de terceros.

Tipos

Hay dos tipos de permisos: Generales y de Experiencia. Los primeros son permisos relativos a acciones generales y los segundos son permisos relativos a una experiencia específica.

Estructura

```solidity
struct GeneralPermission {
    bool updateInfo;
    bool addExperience;
    bool editExperience;
    bool endExperience;
    bool deleteExperience;
    bool addCompanyValidation;
    bool updateWorkRecordValidation;
    bool usePlatformAddress;
    bool total;
}
```

Cada nombre de permiso describe la acción que se permite ejecutar por el operador. El usuario puede optar por configurar permisos "totales", que actúan como superpermisos para todas las operaciones.

```solidity
struct ExperiencePermission {
    bool addWorkRecord;
    bool editWorkRecord;
    bool endWorkRecord;
    bool deleteWorkRecord;
    bool cancelWorkRecord;
}
```

Los Experience Permission (Permisos de Experiencia) se utilizan para las experiencias como freelancer y permiten realizar funciones de Work Record (registro de trabajo) para un Experience (Experiencia) específico. Para entenderlo mejor, imagina a un usuario que realiza trabajos regulares en una plataforma de servicios freelance y desea permitir que esa plataforma registre esos servicios, pero específicamente para esa experiencia y no para otra.

Funciones

updateInfo: Utilizado para insertar/actualizar su perfil.

updateGeneralPermissions: Utilizado para actualizar los GeneralPermission (Permisos Generales).

updateGeneralPermissionsWithSig: Utilizados para actualizar GeneralPermission con firma del usuario. Esto habilita al usuario a configurar GeneralPermission delegando la transacción de la blockchain a una tercera parte.

updateExperiencePermissions: Utilizado para actualizar ExperiencePermissions.

updateExperiencePermissionsWithSig: Utilizado para actualizar ExperiencePermissions con firma del usuario. Esto habilita a los usuarios a configurar Experience Permissions delegando la transacción de la blockchain a una tercera parte.

Last updated