#define SESSIONS "sessions" //session tables
#define ACTIONS "actions" //action tables
+typedef struct {
+ int num; //field number
+ char *name; //field name;
+ }FLDTYP;
+
//field available in table "emails"
-const char *usrfield[]={
- "email",
- "password",
- "space",
- "mxspace",
- "locked",
- (char *)0
+const FLDTYP usrfield[]={
+ {1,"email"},
+ {2,"password"},
+ {3,"space"},
+ {4,"mxspace"},
+ {5,"locked"},
+ {6,"hash"},
+ {0,(char *)0}
};
//field available in table "sessions"
break;
case 2 : //user data extraction
usr=(USRTYP *)calloc(1,sizeof(USRTYP));
- for (int i=0;usrfield[i]!=(char *)0;i++) {
+ for (int i=0;usrfield[i].num!=0;i++) {
char *locval;
- if ((locval=getvalue(sql,rs,0,usrfield[i]))==(char *)0)
+ if ((locval=getvalue(sql,rs,0,usrfield[i].name))==(char *)0)
continue;
- switch (i) {
- case 0 : //user email
+ switch (usrfield[i].num) {
+ case 1 : //user email
usr->email=strdup(locval);
break;
- case 1 : //user passwd
+ case 2 : //user passwd
usr->passwd=strdup(locval);
break;
- case 2 : //user used space
+ case 3 : //user used space
usr->space=atoi(locval);
break;
- case 3 : //user max space available
+ case 4 : //user max space available
usr->mxspace=atoi(locval);
break;
- case 4 : //lock status
+ case 5 : //lock status
usr->lock=atoi(locval);
break;
+ case 6 : //'email:realm:password' MD5
+ usr->hash=strdup(locval);
+ break;
default :
- (void) rou_alert(0,"%s field <%s> not used (Bug?)",OPEP,usrfield[i]);
+ (void) rou_alert(0,"%s field <%d:%s> not implemented (Bug?)",
+ OPEP,usrfield[i].num,usrfield[i].name);
break;
}
}
email TEXTUNIQUE, //User email
password TEXT //User password
DFLT '!',
- realm TEXT //'email:realm:password' MD5
- DFLT '0ABCD9',
- seq BIGINT //HASH as a seq
- DFLT 0,
- hash TEXT, //'email:realm:passwor' MD5
+ realm TEXT //user realm
+ DFLT 'mailleur-email',
+ hash TEXT, //'email:realm:password' MD5
space INTEGER //space used by user email
DFLT 0,
mxspace INTEGER //Maximun space available
CREATE FUNCTION updpass()
RETURNS trigger AS $$
BEGIN
- NEW.seq = hashtextextended(md5(concat (NEW.email,':',NEW.realm,':',new.password)),0);
NEW.hash = md5(concat (NEW.email,':',NEW.realm,':',new.password));
NEW.password = crypt(new.password, gen_salt('md5'));
RETURN NEW;