38 RETURN(err, "Incorrect password"); |
38 RETURN(err, "Incorrect password"); |
39 if(virtname.empty()) |
39 if(virtname.empty()) |
40 RETURN(err, "User name does not refer to a virtual user"); |
40 RETURN(err, "User name does not refer to a virtual user"); |
41 state = new saved_state(pw); |
41 state = new saved_state(pw); |
42 if(mustexist) { |
42 if(mustexist) { |
43 vpw = state->domain.lookup(virtname, true); |
43 vpw = state->domain.lookup(virtname); |
44 if(!vpw) |
44 if(!vpw) |
45 RETURN(err, "Invalid or unknown virtual user"); |
45 RETURN(err, "Invalid or unknown virtual user"); |
46 else if(!passok && !vpw->authenticate(password)) |
46 else if(!passok && !vpw->authenticate(password)) |
47 RETURN(err, "Incorrect password"); |
47 RETURN(err, "Incorrect password"); |
48 else |
48 else |
49 RETURN(ok, ""); |
49 RETURN(ok, ""); |
50 } |
50 } |
51 else { // user must not already exist |
51 else { // user must not already exist |
52 vpw = state->domain.lookup(virtname, true); |
52 vpw = state->domain.lookup(virtname); |
53 if(vpw) |
53 if(vpw) |
54 RETURN(err, "Virtual user already exists"); |
54 RETURN(err, "Virtual user already exists"); |
55 else { |
55 else { |
56 vpw = new vpwentry(virtname, "*", 0, 0); |
56 vpw = new vpwentry(virtname, "*", 0, 0, false); |
57 vpw->set_defaults(true, true); |
|
58 RETURN(ok, ""); |
57 RETURN(ok, ""); |
59 } |
58 } |
60 } |
59 } |
61 } |
60 } |
62 |
61 |