Changeset 565c472 in github


Ignore:
Timestamp:
Aug 6, 2012 5:08:58 AM (10 months ago)
Author:
Aleksander Machniak <alec@…>
Children:
c41a86e5
Parents:
83121ec
Message:

Removed users.alias column, added option ('user_aliases')
to use email address from identities as username (#1488581)

Files:
11 edited

Legend:

Unmodified
Added
Removed
  • CHANGELOG

    r83121ec r565c472  
    22=========================== 
    33 
     4- Removed users.alias column, added option ('user_aliases') 
     5  to use email address from identities as username (#1488581) 
    46- Removed redundant cache.cache_id column (#1488528) 
    57- Fix order of attachments in sent mail (#1488423) 
  • SQL/mssql.initial.sql

    r83121ec r565c472  
    9393        [username] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , 
    9494        [mail_host] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , 
    95         [alias] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , 
    9695        [created] [datetime] NOT NULL , 
    9796        [last_login] [datetime] NULL , 
     
    275274CREATE  INDEX [IX_identities_user_id] ON [dbo].[identities]([user_id]) ON [PRIMARY] 
    276275GO 
     276CREATE  INDEX [IX_identities_email] ON [dbo].[identities]([email],[del]) ON [PRIMARY] 
     277GO 
    277278 
    278279ALTER TABLE [dbo].[session] ADD  
     
    288289        CONSTRAINT [DF_users_username] DEFAULT ('') FOR [username], 
    289290        CONSTRAINT [DF_users_mail_host] DEFAULT ('') FOR [mail_host], 
    290         CONSTRAINT [DF_users_alias] DEFAULT ('') FOR [alias], 
    291291        CONSTRAINT [DF_users_created] DEFAULT (getdate()) FOR [created] 
    292292GO 
    293293 
    294294CREATE  UNIQUE INDEX [IX_users_username] ON [dbo].[users]([username],[mail_host]) ON [PRIMARY] 
    295 GO 
    296  
    297 CREATE  INDEX [IX_users_alias] ON [dbo].[users]([alias]) ON [PRIMARY] 
    298295GO 
    299296 
  • SQL/mssql.upgrade.sql

    r7ac99af3 r565c472  
    263263GO 
    264264 
     265-- Updates from version 0.8 
     266 
     267ALTER TABLE [dbo].[cache] DROP COLUMN [cache_id] 
     268GO 
     269ALTER TABLE [dbo].[users] DROP COLUMN [alias] 
     270GO 
     271CREATE INDEX [IX_identities_email] ON [dbo].[identities]([email],[del]) ON [PRIMARY] 
     272GO 
     273 
  • SQL/mysql.initial.sql

    r83121ec r565c472  
    2323 `username` varchar(128) BINARY NOT NULL, 
    2424 `mail_host` varchar(128) NOT NULL, 
    25  `alias` varchar(128) BINARY NOT NULL, 
    2625 `created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', 
    2726 `last_login` datetime DEFAULT NULL, 
     
    2928 `preferences` text, 
    3029 PRIMARY KEY(`user_id`), 
    31  UNIQUE `username` (`username`, `mail_host`), 
    32  INDEX `alias_index` (`alias`) 
     30 UNIQUE `username` (`username`, `mail_host`) 
    3331) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; 
    3432 
     
    157155 CONSTRAINT `user_id_fk_identities` FOREIGN KEY (`user_id`) 
    158156   REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, 
    159  INDEX `user_identities_index` (`user_id`, `del`) 
     157 INDEX `user_identities_index` (`user_id`, `del`), 
     158 INDEX `email_identities_index` (`email`, `del`) 
    160159) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; 
    161160 
  • SQL/mysql.update.sql

    r83121ec r565c472  
    243243-- Updates from version 0.8 
    244244 
    245 ALTER TABLE cache DROP COLUMN cache_id; 
     245ALTER TABLE `cache` DROP COLUMN `cache_id`; 
     246ALTER TABLE `users` DROP COLUMN `alias`; 
     247ALTER TABLE `identities` ADD INDEX `email_identities_index` (`email`, `del`); 
  • SQL/postgres.initial.sql

    r83121ec r565c472  
    2121    username varchar(128) DEFAULT '' NOT NULL, 
    2222    mail_host varchar(128) DEFAULT '' NOT NULL, 
    23     alias varchar(128) DEFAULT '' NOT NULL, 
    2423    created timestamp with time zone DEFAULT now() NOT NULL, 
    2524    last_login timestamp with time zone DEFAULT NULL, 
     
    2928); 
    3029 
    31 CREATE INDEX users_alias_id_idx ON users (alias); 
    32  
    33    
     30 
    3431-- 
    3532-- Table "session" 
     
    8279 
    8380CREATE INDEX identities_user_id_idx ON identities (user_id, del); 
     81CREATE INDEX identities_email_idx ON identities (email, del); 
    8482 
    8583 
  • SQL/postgres.update.sql

    r83121ec r565c472  
    181181ALTER TABLE cache DROP COLUMN cache_id; 
    182182DROP SEQUENCE cache_ids; 
     183 
     184ALTER TABLE users DROP COLUMN alias; 
     185CREATE INDEX identities_email_idx ON identities (email, del); 
  • SQL/sqlite.initial.sql

    r83121ec r565c472  
    8181 
    8282CREATE INDEX ix_identities_user_id ON identities(user_id, del); 
     83CREATE INDEX ix_identities_email ON identities(email, del); 
    8384 
    8485 
     
    9394  username varchar(128) NOT NULL default '', 
    9495  mail_host varchar(128) NOT NULL default '', 
    95   alias varchar(128) NOT NULL default '', 
    9696  created datetime NOT NULL default '0000-00-00 00:00:00', 
    9797  last_login datetime DEFAULT NULL, 
     
    101101 
    102102CREATE UNIQUE INDEX ix_users_username ON users(username, mail_host); 
    103 CREATE INDEX ix_users_alias ON users(alias); 
    104103 
    105104-- -------------------------------------------------------- 
  • SQL/sqlite.update.sql

    r83121ec r565c472  
    347347CREATE INDEX ix_cache_user_cache_key ON cache(user_id, cache_key); 
    348348CREATE INDEX ix_cache_created ON cache(created); 
     349 
     350CREATE TABLE tmp_users ( 
     351  user_id integer NOT NULL PRIMARY KEY, 
     352  username varchar(128) NOT NULL default '', 
     353  mail_host varchar(128) NOT NULL default '', 
     354  created datetime NOT NULL default '0000-00-00 00:00:00', 
     355  last_login datetime DEFAULT NULL, 
     356  language varchar(5), 
     357  preferences text NOT NULL default '' 
     358); 
     359 
     360INSERT INTO tmp_users (user_id, username, mail_host, created, last_login, language, preferences) 
     361    SELECT user_id, username, mail_host, created, last_login, language, preferences FROM users; 
     362 
     363DROP TABLE users; 
     364 
     365CREATE TABLE users ( 
     366  user_id integer NOT NULL PRIMARY KEY, 
     367  username varchar(128) NOT NULL default '', 
     368  mail_host varchar(128) NOT NULL default '', 
     369  created datetime NOT NULL default '0000-00-00 00:00:00', 
     370  last_login datetime DEFAULT NULL, 
     371  language varchar(5), 
     372  preferences text NOT NULL default '' 
     373); 
     374 
     375INSERT INTO users (user_id, username, mail_host, created, last_login, language, preferences) 
     376    SELECT user_id, username, mail_host, created, last_login, language, preferences FROM tmp_users; 
     377 
     378CREATE UNIQUE INDEX ix_users_username ON users(username, mail_host); 
     379 
     380CREATE INDEX ix_identities_email ON identities(email, del); 
  • config/main.inc.php.dist

    rb6267dad r565c472  
    195195// set to false if only registered users can use this service 
    196196$rcmail_config['auto_create_user'] = true; 
     197 
     198// Enables possibility to log in using email address from user identities 
     199$rcmail_config['user_aliases'] = false; 
    197200 
    198201// use this folder to store log files (must be writeable for apache user) 
  • program/include/rcube_user.php

    r622bce2 r565c472  
    398398    static function query($user, $host) 
    399399    { 
    400         $dbh = rcube::get_instance()->get_dbh(); 
     400        $dbh    = rcube::get_instance()->get_dbh(); 
     401        $config = rcube::get_instance()->config; 
    401402 
    402403        // query for matching user name 
    403         $query = "SELECT * FROM ".$dbh->table_name('users')." WHERE mail_host = ? AND %s = ?"; 
    404         $sql_result = $dbh->query(sprintf($query, 'username'), $host, $user); 
    405  
    406         // query for matching alias 
    407         if (!($sql_arr = $dbh->fetch_assoc($sql_result))) { 
    408             $sql_result = $dbh->query(sprintf($query, 'alias'), $host, $user); 
     404        $sql_result = $dbh->query("SELECT * FROM " . $dbh->table_name('users') 
     405            ." WHERE mail_host = ? AND username = ?", $host, $user); 
     406 
     407        $sql_arr = $dbh->fetch_assoc($sql_result); 
     408 
     409        // username not found, try aliases from identities 
     410        if (empty($sql_arr) && $config->get('user_aliases') && strpos($user, '@')) { 
     411            $sql_result = $dbh->limitquery("SELECT u.*" 
     412                ." FROM " . $dbh->table_name('users') . " u" 
     413                ." JOIN " . $dbh->table_name('identities') . " i ON (i.user_id = u.user_id)" 
     414                ." WHERE email = ? AND del <> 1", 0, 1, $user); 
     415 
    409416            $sql_arr = $dbh->fetch_assoc($sql_result); 
    410417        } 
Note: See TracChangeset for help on using the changeset viewer.