'Stores user data.', 'fields' => array( 'uid' => array( 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'description' => 'Primary Key: Unique user ID.', 'default' => 0, ), 'uuid' => array( 'description' => 'Unique Key: Universally unique identifier for this entity.', 'type' => 'varchar', 'length' => 128, 'not null' => FALSE, ), 'name' => array( 'type' => 'varchar', 'length' => 60, 'not null' => TRUE, 'default' => '', 'description' => 'Unique user name.', ), 'langcode' => array( 'type' => 'varchar', 'length' => 12, 'not null' => TRUE, 'default' => '', 'description' => "The {language}.langcode of the user's profile.", ), 'pass' => array( 'type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => '', 'description' => "User's password (hashed).", ), 'mail' => array( 'type' => 'varchar', 'length' => 254, 'not null' => FALSE, 'default' => '', 'description' => "User's e-mail address.", ), 'signature' => array( 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', 'description' => "User's signature.", ), 'signature_format' => array( 'type' => 'varchar', 'length' => 255, 'not null' => FALSE, 'description' => 'The filter format ID of the signature.', ), 'created' => array( 'type' => 'int', 'not null' => TRUE, 'default' => 0, 'description' => 'Timestamp for when user was created.', ), 'access' => array( 'type' => 'int', 'not null' => TRUE, 'default' => 0, 'description' => 'Timestamp for previous time user accessed the site.', ), 'login' => array( 'type' => 'int', 'not null' => TRUE, 'default' => 0, 'description' => "Timestamp for user's last login.", ), 'status' => array( 'type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny', 'description' => 'Whether the user is active(1) or blocked(0).', ), 'timezone' => array( 'type' => 'varchar', 'length' => 32, 'not null' => FALSE, 'description' => "User's time zone.", ), 'preferred_langcode' => array( 'type' => 'varchar', 'length' => 12, 'not null' => TRUE, 'default' => '', 'description' => 'The {language}.langcode that the user prefers for receiving emails and viewing the site.', ), 'preferred_admin_langcode' => array( 'type' => 'varchar', 'length' => 12, 'not null' => TRUE, 'default' => '', 'description' => 'The {language}.langcode that the user prefers for viewing administration pages.', ), 'init' => array( 'type' => 'varchar', 'length' => 254, 'not null' => FALSE, 'default' => '', 'description' => 'E-mail address used for initial account creation.', ), ), 'indexes' => array( 'access' => array('access'), 'created' => array('created'), 'mail' => array('mail'), ), 'unique keys' => array( 'uuid' => array('uuid'), 'name' => array('name'), ), 'primary key' => array('uid'), ); $schema['users_data'] = array( 'description' => 'Stores module data as key/value pairs per user.', 'fields' => array( 'uid' => array( 'description' => 'Primary key: {users}.uid for user.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, ), 'module' => array( 'description' => 'The name of the module declaring the variable.', 'type' => 'varchar', 'length' => DRUPAL_EXTENSION_NAME_MAX_LENGTH, 'not null' => TRUE, 'default' => '', ), 'name' => array( 'description' => 'The identifier of the data.', 'type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => '', ), 'value' => array( 'description' => 'The value.', 'type' => 'blob', 'not null' => FALSE, 'size' => 'big', ), 'serialized' => array( 'description' => 'Whether value is serialized.', 'type' => 'int', 'size' => 'tiny', 'unsigned' => TRUE, 'default' => 0, ), ), 'primary key' => array('uid', 'module', 'name'), 'indexes' => array( 'module' => array('module'), 'name' => array('name'), ), 'foreign keys' => array( 'uid' => array('users' => 'uid'), ), ); $schema['users_roles'] = array( 'description' => 'Maps users to roles.', 'fields' => array( 'uid' => array( 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'description' => 'Primary Key: {users}.uid for user.', ), 'rid' => array( 'type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'description' => 'Primary Key: ID for the role.', ), ), 'primary key' => array('uid', 'rid'), 'indexes' => array( 'rid' => array('rid'), ), 'foreign keys' => array( 'user' => array( 'table' => 'users', 'columns' => array('uid' => 'uid'), ), ), ); return $schema; } /** * Implements hook_install(). */ function user_install() { // Insert a row for the anonymous user. db_insert('users') ->fields(array( 'uid' => 0, 'uuid' => \Drupal::service('uuid')->generate(), 'name' => '', 'mail' => '', 'langcode' => language_default()->id, )) ->execute(); // We need some placeholders here as name and mail are uniques. // This will be changed by the settings form in the installer. db_insert('users') ->fields(array( 'uid' => 1, 'uuid' => \Drupal::service('uuid')->generate(), 'name' => 'placeholder-for-uid-1', 'mail' => 'placeholder-for-uid-1', 'created' => REQUEST_TIME, 'status' => 1, 'langcode' => language_default()->id, )) ->execute(); }