1 /** 2 Basic definitions 3 4 Copyright: © 2012 RejectedSoftware e.K. 5 License: Subject to the terms of the General Public License version 3, as written in the included LICENSE.txt file. 6 Authors: Sönke Ludwig 7 */ 8 module userman.userman; 9 10 public import vibe.mail.smtp; 11 public import vibe.inet.url; 12 13 static import vibe.utils.validation; 14 15 import std.range : isOutputRange; 16 17 /** 18 See_Also: vibe.utils.validation.validateUserName() 19 */ 20 class UserNameSettings { 21 int minLength = 3; 22 int maxLength = 32; 23 string additionalChars = "-_"; 24 bool noNumberStart = false; // it's always a good idea to keep this option *disabled* 25 } 26 27 package bool validateUserName(R)(UserNameSettings settings, ref R error_sink, string userName) 28 if (isOutputRange!(R, char)) 29 { 30 if (!settings) { 31 static UserNameSettings default_settings; 32 if (!default_settings) default_settings = new UserNameSettings; 33 settings = default_settings; 34 } 35 36 return vibe.utils.validation.validateUserName(error_sink, userName, 37 settings.minLength, 38 settings.maxLength, 39 settings.additionalChars, 40 settings.noNumberStart); 41 } 42 43 /** 44 Settings also used by the API 45 */ 46 class UserManCommonSettings { 47 UserNameSettings userNameSettings; 48 bool useUserNames = true; // use a user name or the email address for identification? 49 bool requireActivation; 50 string serviceName = "User database test"; 51 URL serviceURL = "http://www.example.com/"; 52 string serviceEmail = "userdb@example.com"; 53 } 54 55 deprecated("Consistency: Use .requireActivation instead.") 56 @property ref inout(bool) requireAccountValidation(inout UserManCommonSettings settings) 57 { 58 return settings.requireActivation; 59 } 60 61 deprecated("Consistency: Use .serviceURL instead.") 62 @property ref inout(URL) serviceUrl(inout UserManCommonSettings settings) 63 { 64 return settings.serviceURL; 65 } 66 67 class UserManSettings : UserManCommonSettings { 68 string databaseURL = "mongodb://127.0.0.1:27017/test";//*/"redis://127.0.0.1:6379/1"; 69 SMTPClientSettings mailSettings; 70 71 this() 72 { 73 mailSettings = new SMTPClientSettings; 74 } 75 }