feat(acccount): Add read only account

This commit is contained in:
Hivert Quentin committed 2026-10-21 09:33:37 +02:00
1 parent 01f545b0b3
commit 370a4a433c
9 files changed
+120 -40

No files matched your search

+19 -1
View File
@@ -956,9 +956,27 @@ static NSString *inboxFolderName = @"INBOX";
}
else
{
password = [[self _mailAccount] objectForKey: @"password"];
if (!password)
password = @"";
{
SOGoDomainDefaults *dd;
dd = [[context activeUser] domainDefaults];
if([dd mailAuxiliaryUserAccountsReadOnly] && [[self _mailAccount] objectForKey: @"readOnly"])
{
//If we use aux account in read only, to not have a password means to use the current user one
imapURL = [self imap4URL];
password = [[self authenticatorInContext: context]
imapPasswordInContext: context
forURL: imapURL
forceRenew: renewed];
if (!password)
[self errorWithFormat: @"no IMAP4 password available"];
}
else
password = @"";
}
}
return password;
+1 -1
View File
@@ -37,7 +37,7 @@
- (BOOL) mailCustomFromEnabled;
- (BOOL) mailAuxiliaryUserAccountsEnabled;
- (BOOL) mailAuxiliaryUserAccountsReadOnly;
- (BOOL) mailDisableXForward;
- (NSString *) mailDomain;
- (NSString *) imapServer;
+5
View File
@@ -106,6 +106,11 @@
return [self boolForKey: @"SOGoMailAuxiliaryUserAccountsEnabled"];
}
- (BOOL) mailAuxiliaryUserAccountsReadOnly
{
return [self boolForKey: @"SOGoMailAuxiliaryUserAccountsReadOnly"];
}
- (BOOL) mailDisableXForward
{
return [self boolForKey: @"SOGoMailDisableXForward"];
+11
View File
@@ -276,6 +276,7 @@
NSURL * smtpUrl;
SOGoUser* user;
SOGoSystemDefaults *sd;
SOGoDomainDefaults *domainDefaults;
BOOL doSmtpAuth;
result = nil;
@@ -325,6 +326,16 @@
{
login = [currentAcount objectForKey: @"userName"];
password = [currentAcount objectForKey: @"password"];
domainDefaults = [[woContext activeUser] domainDefaults];
if(!password && [domainDefaults mailAuxiliaryUserAccountsReadOnly] && [currentAcount objectForKey: @"readOnly"])
{
//If aux account is read only with no password, user the current user one instead
protocol = @"imap";
if ([encryption isEqualToString: @"ssl"] || [encryption isEqualToString: @"tls"])
protocol = @"imaps";
server = [NSString stringWithFormat: @"%@://%@", protocol, [currentAcount objectForKey: @"serverName"]];
password = [authenticator smtpPasswordInContext: woContext forURL: server];
}
smtpAuthMethod = @"plain"; //Only support plain for auxiliary account
}
else
+4 -1
View File
@@ -1068,6 +1068,8 @@
[self _appendSystemMailAccountWithDelegatedIdentities: appendDeletegatedIdentities];
if ([[self domainDefaults] mailAuxiliaryUserAccountsEnabled])
{
//If we are in read-only, only add account with this param
auxAccounts = [[self userDefaults] auxiliaryMailAccounts];
if (auxAccounts)
{
@@ -1085,7 +1087,8 @@
account = [auxAccounts objectAtIndex: i];
if (![[account objectForKey: @"password"] isKindOfClass: [NSDictionary class]])
{
[self errorWithFormat:@"Can't decrypt the password for auxiliary account %@, is not a dictionnary",
if(![account objectForKey: @"readOnly"]) //Read only account can have no password
[self errorWithFormat:@"Can't decrypt the password for auxiliary account %@, is not a dictionnary",
[account objectForKey: @"name"]];
continue;
}