mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-02-17 07:33:57 +00:00
feat(core): Add URL encryption for GDPR compliancy. Disable url encryption for caldav.
This commit is contained in:
@@ -370,9 +370,11 @@ static BOOL debugLeaks;
|
||||
id userFolder;
|
||||
NSData *decodedLogin;
|
||||
NSString *login;
|
||||
|
||||
login = [SOGoUser getDecryptedUsernameIfNeeded: _key];
|
||||
|
||||
WORequest *request;
|
||||
|
||||
request = [_ctx request];
|
||||
login = [SOGoUser getDecryptedUsernameIfNeeded: _key request: request];
|
||||
|
||||
user = [SOGoUser userWithLogin: login roles: nil];
|
||||
if (user)
|
||||
userFolder = [$(@"SOGoUserFolder") objectWithName: login
|
||||
|
||||
@@ -980,7 +980,7 @@
|
||||
if ([[[path objectAtIndex: i] lowercaseString] isEqualToString:@"dav"]) {
|
||||
if ([path count] > (i + 1)) {
|
||||
[path replaceObjectAtIndex: (i +1)
|
||||
withObject: [SOGoUser getDecryptedUsernameIfNeeded: [path objectAtIndex: (i + 1)]]];
|
||||
withObject: [SOGoUser getDecryptedUsernameIfNeeded: [path objectAtIndex: (i + 1)] request: [context request]]];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
@class NSString;
|
||||
|
||||
@class WOContext;
|
||||
@class WORequest;
|
||||
|
||||
@class SOGoAppointmentFolder;
|
||||
@class SOGoAppointmentFolders;
|
||||
@@ -136,8 +137,8 @@
|
||||
- (SOGoContactFolder *) personalContactsFolderInContext: (WOContext *) context;
|
||||
|
||||
/* Encryption */
|
||||
+ (NSString *)getEncryptedUsernameIfNeeded:(NSString *)username;
|
||||
+ (NSString *)getDecryptedUsernameIfNeeded:(NSString *)username;
|
||||
+ (NSString *)getEncryptedUsernameIfNeeded:(NSString *)username request:(WORequest *)request;
|
||||
+ (NSString *)getDecryptedUsernameIfNeeded:(NSString *)username request:(WORequest *)request;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -1296,13 +1296,13 @@ static const NSString *kEncryptedUserNamePrefix = @"uenc";
|
||||
}
|
||||
|
||||
/* Encryption */
|
||||
+ (NSString *) getEncryptedUsernameIfNeeded:(NSString *)username
|
||||
+ (NSString *) getEncryptedUsernameIfNeeded:(NSString *)username request: (WORequest *)request
|
||||
{
|
||||
NSException *exception;
|
||||
NSString *tmp, *cacheKey;
|
||||
SOGoCache *cache;
|
||||
|
||||
if (![[SOGoSystemDefaults sharedSystemDefaults] isURLEncryptionEnabled] || [username isEqualToString: @"anonymous"])
|
||||
if (![[SOGoSystemDefaults sharedSystemDefaults] isURLEncryptionEnabled] || [username isEqualToString: @"anonymous"] || [[request requestHandlerKey] isEqualToString:@"dav"])
|
||||
return username;
|
||||
|
||||
cache = [SOGoCache sharedCache];
|
||||
@@ -1331,13 +1331,13 @@ static const NSString *kEncryptedUserNamePrefix = @"uenc";
|
||||
}
|
||||
}
|
||||
|
||||
+ (NSString *) getDecryptedUsernameIfNeeded:(NSString *)username
|
||||
+ (NSString *) getDecryptedUsernameIfNeeded:(NSString *)username request: (WORequest *)request
|
||||
{
|
||||
NSException *exception;
|
||||
NSString *tmp, *cacheKey;
|
||||
SOGoCache *cache;
|
||||
|
||||
if (![[SOGoSystemDefaults sharedSystemDefaults] isURLEncryptionEnabled] || [username isEqualToString: @"anonymous"])
|
||||
if (![[SOGoSystemDefaults sharedSystemDefaults] isURLEncryptionEnabled] || [username isEqualToString: @"anonymous"] || [[request requestHandlerKey] isEqualToString:@"dav"])
|
||||
return username;
|
||||
|
||||
cache = [SOGoCache sharedCache];
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
}
|
||||
|
||||
- (NSString *) nameInContainer {
|
||||
return [SOGoUser getEncryptedUsernameIfNeeded: [super nameInContainer]];
|
||||
return [SOGoUser getEncryptedUsernameIfNeeded: [super nameInContainer] request: [context request]];
|
||||
}
|
||||
|
||||
/* ownership */
|
||||
|
||||
@@ -344,7 +344,7 @@ static const NSString *kJwtKey = @"jwt";
|
||||
forKey: @"expire"];
|
||||
[json setObject: [NSNumber numberWithInt: grace]
|
||||
forKey: @"grace"];
|
||||
[json setObject: [SOGoUser getEncryptedUsernameIfNeeded: username]
|
||||
[json setObject: [SOGoUser getEncryptedUsernameIfNeeded: username request: request]
|
||||
forKey: @"username"];
|
||||
|
||||
response = [self responseWithStatus: 200
|
||||
@@ -575,7 +575,7 @@ static const NSString *kJwtKey = @"jwt";
|
||||
response
|
||||
= [self redirectToLocation: [NSString stringWithFormat: @"%@%@",
|
||||
oldLocation,
|
||||
[[SOGoUser getEncryptedUsernameIfNeeded:login] stringByEscapingURL]]];
|
||||
[[SOGoUser getEncryptedUsernameIfNeeded:login request: [context request]] stringByEscapingURL]]];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -791,7 +791,7 @@ static const NSString *kJwtKey = @"jwt";
|
||||
}
|
||||
|
||||
response = [self responseWithStatus: 200 andJSONRepresentation:
|
||||
[NSDictionary dictionaryWithObjectsAndKeys: [SOGoUser getEncryptedUsernameIfNeeded:username], @"username", nil]];
|
||||
[NSDictionary dictionaryWithObjectsAndKeys: [SOGoUser getEncryptedUsernameIfNeeded:username request: request], @"username", nil]];
|
||||
|
||||
if (!passwordRecovery) {
|
||||
authCookie = [auth cookieWithUsername: username
|
||||
|
||||
Reference in New Issue
Block a user