View Issue Details

This bug affects 5 person(s).
 294
IDProjectCategoryView StatusLast Update
15664Bug reportsSecuritypublic2023-10-10 10:17
ReporterIndispirit Assigned Toc_schmitz  
PriorityimmediateSeverityfeature 
Status resolvedResolutionfixed 
Summary15664: OAuth support for SMTP & IMAP
Description

Implement OAuth for LS email settings

Email providers are shifting to OAuth to allow app access so requesting that LS support OAuth in email settings.

Example: LS currently accesses Gsuite from Google by taking the login details of a Gsuite account in LS global email settings. Gsuite classifies applications that do this as 'LSAs' - Less Secure Applications and to allow LS to access Gsuite this way currently, you have to provide an extra permission.

Google plans to turn off access for LSAs and only permit access via OAuth: "

Access to LSAs will be turned off in two stages:

1. June 15, 2020 - Users who try to connect to an LSA for the first time will no longer be able to do so. This includes third-party apps that allow password-only access to Google calendars, contacts, and email via protocols such as CalDAV, CardDAV and IMAP. Users who have connected to LSAs prior to this date will be able to continue using them until usage of all LSAs is turned off.
2. February 15, 2021 - Access to LSAs will be turned off for all G Suite accounts."
TagsNo tags attached.
Bug heat294
Complete LimeSurvey version number (& build)dev
I will donate to the project if issue is resolved
Browser
Database type & version
Server OS (if known)
Webserver software & version (if known)
PHP Version

Users monitoring this issue

DenisChenu, Leithy, netikja

Activities

DenisChenu

DenisChenu

2019-12-18 16:01

developer   ~55069

It's one of the reason to rewrite mail system in 4 and extend clearly PHPMailer.
https://github.com/LimeSurvey/LimeSurvey/blob/3ca1be07878d3e3953a7aa38bf7fb5f85345ccb8/application/core/LimeMailer.php#L495
Sample plugin : https://github.com/LimeSurvey/LimeSurvey/tree/develop/application/core/plugins/mailSenderToFrom (more easy this one)

Leithy

Leithy

2022-05-18 14:51

reporter   ~69782

According to this http://www.pmail.com/newsflash.htm Google will require Oauth2 by the end of May 2022 - this month. Would it be worth having this issue bumped up the priority list?

DenisChenu

DenisChenu

2022-05-18 14:56

developer   ~69784

The cost of the assessment typically varies between $10,000 -$75,000 (or more) depending on the size and complexity of the application; smaller applications may see costs at a lower threshold of $4,500.

leave google …

DenisChenu

DenisChenu

2022-05-18 14:56

developer   ~69785

And again : it can be done in plugin

Leithy

Leithy

2022-05-19 13:09

reporter   ~69846

"...leave Google"

Lol...

"...can be done in plugin": Most certainly but many of the existing features could be plugins, including all the SMTP settings. I think a more nuanced rule is used in practice ;)

image.png (9,169 bytes)   
image.png (9,169 bytes)   
DenisChenu

DenisChenu

2022-05-19 14:15

developer   ~69852

Did you really read the link

"Every app that requests access to restricted scope Google user´s data … may see costs at a lower threshold of $4,500."

I confirm : leave google.

Leithy

Leithy

2022-05-19 14:20

reporter   ~69853

Irrelevant to this issue (relates to Android app publishing)?

LimeSurvey doesn't seem to be leaving Google - see image for three Google specific settings in Global Configuration.

NB Oauth2 isn't even just for Google, it's a standard (rammed through by Google) for what that's worth

c_schmitz

c_schmitz

2022-05-20 09:15

administrator   ~69897

So according the schedule Google has deactivated LSA a long time ago.
I did not hear from our user base so far that sending invitations using Gmail would not work.
So, it is not possible to use Google Mail with LimeSurvey now?

Leithy

Leithy

2022-05-20 11:25

reporter   ~69906

I think they planned to do it 2020 but delayed it due to the pandemic.

Seems that it the switchover date for mandatory Oauth2 is now 30 May 2022:

https://support.google.com/mail/thread/153515128/which-email-client-will-work-with-gmail-after-30th-may-2022?hl=en
https://github.com/k9mail/k-9/issues/5956
https://www.ghacks.net/2022/04/06/thunderbird-91-8-0-makes-important-changes-to-google-mail-accounts/

Leithy

Leithy

2022-05-20 11:42

reporter   ~69907

Found the actual announcement on LSAs:

https://support.google.com/accounts/answer/6010255

gabrieljenik

gabrieljenik

2022-10-20 21:49

manager   ~72371

Last edited: 2022-10-20 21:49

Please find below some comments about the analysis of the ticket

About the protocol

https://stackoverflow.com/questions/65228456/how-does-phpmailer-use-oauth/65230616#65230616

What's difficult about XOAUTH2 is obtaining that access token. To get hold of it requires that you run an HTTP service (on top of whatever other services you are running) and provide it with the correct ID and secret, which you submit and receive an access token in response, which you then use in your XOAUTH2 request. PHPMailer provides a script that helps you to do this for Google, Microsoft and Yahoo services, and others via the numerous adapters that are available for the PHPLeague's OAuth2 client package.

IMHO, OAuth2's monumentally confusing structure, ambiguity, and complexity creates excessive overhead and many opportunities for error, and it's all ultimately secured by a username and password, all of which undermines the security of the whole exercise. What doesn't help is that there is no standardisation, and the procedures you must follow to obtain tokens can be completely different across providers (hence the need for different adapters), and is subject to frequent change, making it hard to document. However, since Google imposes it on everyone, you have no choice but to go along with it.

Analysis

Please find below some comments about the analysis done:

Library

For each OAuth2 provider a specific library is needed

Data

In general, I understand that to send the mail it will be needed a client_id, a client_secret, and the Refresh Token.
In the case of Azure you also need a tenantId.
I don't know how it will be with other providers.

Endpoint for getting the Refresh Token

The Refresh Token is assigned by the provider.
An endpoint is required to receive it from the provider and save it.

  • It has to be HTTPS
  • The URL is configured in the Google console (or the provider setting).

UI for Refresh Token

Global Settings > Email Settings should be updated

  • It should have some warning that OAUTH only works if HTTPS is enabled.
  • It should ask you:
    • Provider (Google, Microsoft, Yahoo, etc.)
    • Client ID
    • Client Secret
      When saving (or maybe with a new get refresh token button), it should send you to the provider page to confirm the permissions. The new endpoint would receive the message and save the refresh token in a global setting (no UI).

We could also fetch the settings with a plugin event.

Plugin event

Ideally there would be new Plugin Events added so that plugins can register new providers.
The provider is used in two moments:

When fetching the refresh token

We could implement the UI for refresh token as plugin settings.
This common behaviour could be on a BaseSMTPOauth class.

When sending the mail.

To get the AbstractProvider instance that PHPMailer needs, additional parameters may be needed (such as the tenantId in the case of Azure), so somehow the plugin would have to indicate what additional fields should be add in Global Settings.

Also, we could set the provider on a plugin event (ex: beforeEmail)

DenisChenu

DenisChenu

2022-10-21 08:45

developer   ~72372

Don't try to develop OAuth system,
PHPMailer already have solution : https://github.com/LimeSurvey/LimeSurvey/blob/master/application/third_party/phpmailer/src/OAuth.php

The doc is here …
https://github.com/PHPMailer/PHPMailer/wiki/Gmail-XOAUTH2-Using-Google-API-Client

I really think it must be a Plugin , core plugin yes, but a plugin.

gabrieljenik

gabrieljenik

2022-10-21 13:59

manager   ~72373

Don't try to develop OAuth system,

Never intended to

DenisChenu

DenisChenu

2022-10-21 14:09

developer   ~72374

Never intended to

Seems need specific library for GMail

composer require google/apiclient ^2.11

Then really better in a plugin

c_schmitz

c_schmitz

2022-10-26 10:22

administrator   ~72428

I would suggest that as a first step you add OAUTH support for Google as described in the PHPMailer docs.
After that is implemented we will see how we go from there.

gabrieljenik

gabrieljenik

2022-10-26 15:40

manager   ~72436

I would suggest that as a first step you add OAUTH support for Google as described in the PHPMailer docs.

You mean a PoC?
Or adding that to Lime with all the configuration screens?

If you intended the latter, I guess you are OK with the analysis and approach, right?

DenisChenu

DenisChenu

2022-10-26 17:58

developer   ~72440

Or adding that to Lime with all the configuration screens?

A lot of configuration screen + a complete library

A good reason to set it as Plugin ?
No ?
@c_schmitz ?

gabrieljenik

gabrieljenik

2023-01-03 20:50

manager   ~73340

Picking this up. As a plugin :)

gabrieljenik

gabrieljenik

2023-01-09 17:54

manager   ~73405

Last edited: 2023-02-21 14:30

Hi All,

Let me show you how about the progress on this story.

We have developed a core plug-in that:

1- Pickups the credentials for connecting to Google services.

2 - Calls Google services to get a refresh-token, that will be used when sending emails.

3 - Intervene during the email sending process to avoid sending the emails through the regular means and send them directly through Google services.

Please find below a few screenshot.

Working on this proof-of-concept we have come with the following issues or observations.

Https required

Google requires an https URL callback when setting up the service. So HTTPs will be required for using this plugin. We will be adding a check on that as well as a warning if not having the proper schema.

From Address

Google seems to overwrite the from address and use the one related to the account.

New Email Events

Right now we only have beforeXxxEmail event, which is used generally for decorating the email (Ex. adding a header), or for sending it through a different non-standard mean.

As the plug-ins don't have a synchronization mechanism, if there are two plug-ins using the same beforeXxxEmail event, is hard to know for sure which plug-in will run first and which will run later.

Because of that we believe we need a specific event named beforeSendingEmail. This way we will be able to separate two different processes:

A - Decorating the email (as adding a header or setting specific form addresses depending on the survey)

B - Sending it (as sending it through SMTP, OAuth, or even other gateways).

Global setting screen

We will need to inform the administrators that the OAuth plugin is active. If not administrator could get confused and think that the emails will be sent through regular means.

Right now for this proof-of-concept we are going to be doing it through JavaScript on an event. We believe we may need something a little bit more robust as there could be many other email plug-in.

We don't have a clear view on this but we picture having an email plugin coordinator, which can query the different email plug in and, for example, identify if the emails will be sent to a regular mean or through a plug-in email.

The global settings screen could use this new blocking email coordinator for knowing if the SMTP credential fields should be disabled or not, and also for showing a text message that says which plug-in will be handling emails.

Porting code to new plugins

Looking to the Future the current meaning for sending emails could be relocated in one or many core plug ins.

image-2.png (233,769 bytes)
image-3.png (312,429 bytes)
DenisChenu

DenisChenu

2023-01-09 18:02

developer   ~73406

Last edited: 2023-01-09 18:07

As the plug-ins don't have a synchronization mechanism, if there are two plug-ins using the same beforeEmail event, is hard to know for sure which plug-in will run first and which will run later.
Of that we believe we need a specific event named beforeSendingEmail. This way we will be able to separate two different processes:

beforeEmail receive whole LimeMailer (extend PHPMailer) as ->get('mailer'), then it can be used for anything that is related to mail in my opinon.

You can use priority in config.xml to be sure to use this way to send email after all olther are done. It's done for this.

But : we always have incompatibility issue with other plugin.
For example : you can not use https://github.com/Xites/LS_mailDKIM with google.

Or : developer can not really be sure other plugin broke somthing : https://gitlab.com/SondagesPro/mailing/noMailToExample must happen before google here for example.

gabrieljenik

gabrieljenik

2023-01-24 21:58

manager   ~73551

POC: https://github.com/LimeSurvey/LimeSurvey/tree/feature/15664-Google-OAuth-plugin

DenisChenu

DenisChenu

2023-01-25 07:53

developer   ~73554

Great !

Maybe PR as draft ? Hard to compare here

gabrieljenik

gabrieljenik

2023-01-25 13:25

manager   ~73556

Last edited: 2023-04-17 20:31

PoC: https://github.com/LimeSurvey/LimeSurvey/pull/2868

arpsh

arpsh

2023-02-20 12:05

reporter   ~73883

Just to add to this feature request, the issue also now affects those who use Microsoft services for their emails (i.e. huge numbers of public and private sector organisaitons) because basic authentication has also been dropped by Exchange online at the beginning of this year:

https://learn.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/deprecation-of-basic-authentication-exchange-online

gabrieljenik

gabrieljenik

2023-02-20 16:29

manager   ~73885

Hi All,

Picking up a bit on this.

beforeEmail receive whole LimeMailer (extend PHPMailer) as ->get('mailer'), then it can be used for anything that is related to mail in my opinon.

So, you say that we should extend LimeMailer for sending emails through google, right?
If that's the case, how would admins choose what Mailer to use?
Config file?

DenisChenu

DenisChenu

2023-02-20 16:31

developer   ~73886

If that's the case, how would admins choose what Mailer to use?

I don't understand ?
Plugin choose what to do.

gabrieljenik

gabrieljenik

2023-02-20 16:39

manager   ~73887

Plugin choose what to do.

Plugin can choose what mailer to use?

DenisChenu

DenisChenu

2023-02-20 16:42

developer   ~73888

https://github.com/LimeSurvey/LimeSurvey/blob/c1b544a03d05ba7302a3457c518c4722600c3c59/application/core/LimeMailer.php#L508

Plugin get whole LimeMailer then can extend it if needed .

But right : must be PHPMailer compatible.

gabrieljenik

gabrieljenik

2023-02-21 15:13

manager   ~73907

You can use priority in config.xml to be sure to use this way to send email after all olther are done. It's done for this.

Priority is hard to coordinate among plugin developers.
As an offtopic, we could have something like "runBefore: PluginName".

I don't like the priority thing a lot.

I don't feel it was designed for cases like this, where you have 2 whole different processes: Sending Emails and Decorating them.
Yes, it could work, but I feel it is fragile and it was not designed for that.

Also, on the other side, if there are multiple plugins for sending emails, why all those should react to an event if we already know which one should do the work already.

You already mention about incompatibility or how one plugin can mess other plugins.

It is like we are talking not only about priority (sequence) but also coordination among plugins (sequence + general flow decisions like knowing which plugins should run).

Plugin get whole LimeMailer then can extend it if needed .

Yes, but if the mailer is replaced inside the plugin, how does the process continue when the event continues on the mailer ?
The situation you say would be like this:
1 - Mailer dispatch events
2 - Plugin replaces mailer (notice there is no output parameter on the event for returning a mailer)
3 - Mailer continues after plugin ? How? Which Mailer? Original one I guess.

gabrieljenik

gabrieljenik

2023-02-21 15:25

manager   ~73909

Right now we only have beforeXxxEmail event, which is used generally for decorating the email (Ex. adding a header), or for sending it through a different non-standard mean.
As the plug-ins don't have a synchronization mechanism, if there are two plug-ins using the same beforeXxxEmail event, is hard to know for sure which plug-in will run first and which will run later.

My bad. I was confused and mixing subjects.
I believe we should have a separate event for sending emails, but it is not needed now for the solution.

OAuth plugin just need to set settings on mailer.

Please, for now, let's disregard the whole priority + sequence issues. Not an issue I believe.
Will keep you updated.

gabrieljenik

gabrieljenik

2023-02-21 16:04

manager   ~73911

Last edited: 2023-02-21 16:05

Sorry about all the back and forth, actual needs and code-reorgaization-desires got mixed. :)
So, after reviewing, this is what is pending to be done.

Thoughts?

New Mail Method

There should be a new mail method available from global settings: SMTP with OAuth.

Provider Registration - new Event listSMTPOauthPlugins

Limesurvey needs to know which providers are available so they are listed to the admin.
The admin can choose the provider from the Global Settings.

Ideally there would be new Plugin Events added so that plugins can register new providers (similar to export writers).
The providers would be shown on a dropdown.

There would be a new event for that: listSMTPOAuthPlugins.

After Selecting Provider: Informing Configuration Requirements - new Event afterSelectSMTPOAuthPlugin

The OAuth mechanism is based on a refresh token, that the client uses to authenticate to the provider.
This should be triggered by the admin. The admin should be invited to run the process with a message, afer setting the smtp provider.

The message would come from the plugin itself from a new event: afterSelectSMTPOAuthPlugin

Specific Configuration Parameters

Probably each OAuth mechanism would need some own parameters/settings to get it, and hence configuration screen.

We could implement the UI for refresh token as plugin settings.
If need custom views, they could be created inside the plugin.

Some of the common behaviour identified could be on a new BaseSMTPOauth plugin class.

Configuration Stage

The admin needs to follow the instructions from the plugin and configure the refresh token.
This could happen from the plugin settings.

Some of the common behaviour identified could be on a new BaseSMTPOauth plugin class.

Sending Email Stage - new Event newSMTPOAuthConfiguration

PHPMailer needs a provider (class which extends AbstractProvider) to authenticate with the provider.
The provider needs to be set from the plugin.

We would use a new event: newSMTPOAuthConfiguration

From LimeMailer (https://github.com/LimeSurvey/LimeSurvey/blob/c1b544a03d05ba7302a3457c518c4722600c3c59/application/core/LimeMailer.php#L156), a new case branch would be added to trigger an event for a specific plugin (usage of target parameter when dispatching the event).

DenisChenu

DenisChenu

2023-02-21 16:13

developer   ~73912

3 - Mailer continues after plugin ? How? Which Mailer? Original one I guess.

It's same mailer, just partially resetted : if youupdate at start of process : it's not updated (before https://github.com/LimeSurvey/LimeSurvey/blob/c1b544a03d05ba7302a3457c518c4722600c3c59/application/core/LimeMailer.php#L233 init again)
I a plugin update mialer, it update for all action after using same instance.https://github.com/LimeSurvey/LimeSurvey/blob/c1b544a03d05ba7302a3457c518c4722600c3c59/application/core/LimeMailer.php#L224
For default instance : https://github.com/LimeSurvey/LimeSurvey/blob/c1b544a03d05ba7302a3457c518c4722600c3c59/application/core/LimeMailer.php#L200 init happen.

As an offtopic, we could have something like "runBefore: PluginName".
I don't like the priority thing a lot.
I don't feel it was designed for cases like this, where you have 2 whole different processes: Sending Emails and Decorating them.
Yes, it could work, but I feel it is fragile and it was not designed for that.

The original idea about priority was a complete "PluginA use PluginB" "PluginA need PluginB" etc …

But priority do the trick, if you have a "decorative" plugin : just remind to set priority up to 0.

Yes : plugin can not be compatible with ALL plugins … only according to specific plugins …

gabrieljenik

gabrieljenik

2023-02-21 16:28

manager   ~73913

3 - Mailer continues after plugin ? How? Which Mailer? Original one I guess.

Just please disregard. That part of the conversiton got off-track. :)
I got confused a bit and probably drove the conversation crazy

DenisChenu

DenisChenu

2023-02-21 16:32

developer   ~73914

But this part seems totally related :)

If you don't reset instance, but set to another mailer https://github.com/LimeSurvey/LimeSurvey/blob/34d67e356dd997fa30c125c4dbbde9b188866b11/vendor/phpmailer/phpmailer/src/PHPMailer.php#L215
(for example POP3)
The same mailer was used after :)

yes : if you use POP3 , core config are not really used …

gabrieljenik

gabrieljenik

2023-02-21 16:37

manager   ~73915

If you don't reset instance, but set to another mailer

I got lost. If you feel it has to be considered for the new developemtn, and only then, can you please pickup and elaborate more?
Thanks!

DenisChenu

DenisChenu

2023-02-21 17:23

developer   ~73916

I got lost. If you feel it has to be considered for the new developemtn, and only then, can you please pickup and elaborate more?

I don't understand : what you done here is OK : https://github.com/LimeSurvey/LimeSurvey/pull/2868/files#diff-faf63dfcf1cb20a354eedda8d9213e6924846a8176559153c8b789f79d18b6f6R425

I just add

if ($limeMailer->AuthType == 'XOAUTH2') {
    return;
}

because we don't need to call it again

And maybe time too ? We need to test if token still OK ?

gabrieljenik

gabrieljenik

2023-02-21 20:21

manager   ~73917

what you done here is OK : https://github.com/LimeSurvey/LimeSurvey/pull/2868/files#diff-faf63dfcf1cb20a354eedda8d9213e6924846a8176559153c8b789f79d18b6f6R425

Agree

As to get aligned... These are the next steps I am thinking for this story.
https://bugs.limesurvey.org/view.php?id=15664#c73911

Any comment about that? About the new events?

DenisChenu

DenisChenu

2023-02-21 20:30

developer   ~73918

Any comment about that? About the new events?

I alredy add own plugin event inside my plugins, one plugin is done only for this (replace beforeEmail event)
https://gitlab.com/SondagesPro/mailing/eventBeforeTokenEmailExtended/-/blob/master/eventBeforeTokenEmailExtended.php#L50

About updating Global settings : @ollehar didn't work on a new solution for plugins ?

gabrieljenik

gabrieljenik

2023-02-21 20:35

manager   ~73919

I alredy add own plugin event inside my plugins

These would be new generally available plugin events called from outside the plugin.

About updating Global settings ?

The JS workaround we did on the PoC would go away. That was just for the PoC.
We would use the approach described couple of posts above (https://bugs.limesurvey.org/view.php?id=15664#c73911)

ollehar didn't work on a new solution for plugins

We wouldn't use that as the new screens would be inside the plugin

DenisChenu

DenisChenu

2023-02-21 20:37

developer   ~73920

We would use the approach described couple of posts above (https://bugs.limesurvey.org/view.php?id=15664#c73911)

There should be a new mail method available from global settings: SMTP with OAuth.

Then you add it in core, not in core plugins ?

gabrieljenik

gabrieljenik

2023-02-21 23:56

manager   ~73923

Then you add it in core, not in core plugins ?

We would be updating core to support a new email sending method: OAuth SMTP.
The sending would be done through core plugins.

DenisChenu

DenisChenu

2023-03-03 09:57

developer   ~74021

We would be updating core to support a new email sending method: OAuth SMTP.

Here : it's to add it in Global settings, right ?

Maybe like export ? List export ? https://manual.limesurvey.org/Export_plugin_development#listExportOptions

But still lack of the settings in global settings (we really need a global event to add input on existing form …)

gabrieljenik

gabrieljenik

2023-03-03 13:45

manager   ~74022

We would be updating core to support a new email sending method: OAuth SMTP.

Here : it's to add it in Global settings, right ?

Yes

Maybe like export ? List export ? https://manual.limesurvey.org/Export_plugin_development#listExportOptions

https://bugs.limesurvey.org/view.php?id=15664#c73911
Provider Registration - new Event listSMTPOauthPlugins

DenisChenu

DenisChenu

2023-03-03 18:02

developer   ~74027

Provider Registration - new Event listSMTPOauthPlugins

It's the point, why not Provider Registration - new Event listEmailSendPlugins

gabrieljenik

gabrieljenik

2023-03-03 18:53

manager   ~74028

Provider Registration - new Event listSMTPOauthPlugins

It's the point, why not Provider Registration - new Event listEmailSendPlugins

Could be, not sure if the same event can be used for all.
My idea: Just start with my suggestion and then if we see the event applies in more general terms, we just rename them.

gabrieljenik

gabrieljenik

2023-04-17 20:44

manager   ~74515

PR: https://github.com/LimeSurvey/LimeSurvey/pull/3054

gabrieljenik

gabrieljenik

2023-04-26 14:28

manager   ~74647

These are a couple of core plugins to send mails through google and azure.

Testing Instructions:
1 - Activate a plugin.
2 - Set the settings and Configure it (get refresh token from provider)
3 - Selectthe plugin on the global sttings as to send emails with the plugin
4 - Send emails (ex: using tokens)

gabrieljenik

gabrieljenik

2023-07-04 17:13

manager   ~75932

Please find below more context on how to setup the environment for Azure.

Similar for Google:
https://support.google.com/cloud/answer/6158849?hl=en

gabrieljenik

gabrieljenik

2023-08-09 14:04

manager   ~76508

@Indispirit can you help testing maybe?

tibor.pacalat

tibor.pacalat

2023-08-09 14:22

administrator   ~76513

Just to add to the comment above, I have tried to test this, but I am encountering issues with both Azure and Google OAuth plugin.

For Azure, I can't seem to get a valid token and I get an error on sending email (no wonder if the token is not valid, but I tried anyways). Look at images image1 and image2.

For Google I tried to set it up as well and got this message (image3). Not sure what is wrong here.

image1.png (106,078 bytes)
image2.png (296,899 bytes)
image3.png (223,759 bytes)
Indispirit

Indispirit

2023-08-09 14:37

reporter   ~76514

@gabrieljenik. Will look into it. We shifted to email relays in the interim https://forums.limesurvey.org/index.php/forum/development/134875-using-google-workspace-email-relay-for-limesurvey - might work out better in the long-term.

tibor.pacalat

tibor.pacalat

2023-09-14 18:07

administrator   ~77058

@Indispirit did you manage to look into it?

c_schmitz

c_schmitz

2023-10-10 10:17

administrator   ~77598

Fix committed to master branch: http://bugs.limesurvey.org/plugin.php?page=Source/view&id=35600

Related Changesets

LimeSurvey: master 1d6a6afc

2023-10-06 08:55:44

Gabriel Jenik


Committer: c_schmitz Details Diff
New feature 15664: Google OAuth plugin for emails (#3054) Affected Issues
15664
add - application/controllers/SmtpOAuthController.php Diff File
mod - application/controllers/admin/globalsettings.php Diff File
mod - application/core/LimeMailer.php Diff File
add - application/core/plugins/AzureOAuthSMTP/AzureOAuthSMTP.php Diff File
add - application/core/plugins/AzureOAuthSMTP/composer.json Diff File
add - application/core/plugins/AzureOAuthSMTP/config.xml Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/autoload.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/composer/ClassLoader.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/composer/InstalledVersions.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/composer/LICENSE Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/composer/autoload_classmap.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/composer/autoload_files.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/composer/autoload_namespaces.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/composer/autoload_psr4.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/composer/autoload_real.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/composer/autoload_static.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/composer/installed.json Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/composer/installed.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/composer/platform_check.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/greew/oauth2-azure-provider/.gitignore Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/greew/oauth2-azure-provider/LICENSE Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/greew/oauth2-azure-provider/README.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/greew/oauth2-azure-provider/composer.json Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/greew/oauth2-azure-provider/phpcs.xml Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/greew/oauth2-azure-provider/phpunit.xml Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/greew/oauth2-azure-provider/src/Provider/Azure.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/greew/oauth2-azure-provider/src/Provider/AzureResourceOwner.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/greew/oauth2-azure-provider/tests/src/Provider/AzureTest.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/CHANGELOG.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/LICENSE Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/README.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/UPGRADING.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/composer.json Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/BodySummarizer.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Client.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/ClientInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/ClientTrait.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/HandlerStack.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/MessageFormatter.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Middleware.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Pool.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/RequestOptions.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/TransferStats.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/Utils.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/functions.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/guzzle/src/functions_include.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/CHANGELOG.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/LICENSE Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/README.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/composer.json Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/AggregateException.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/CancellationException.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/Coroutine.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/Create.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/Each.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/EachPromise.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/FulfilledPromise.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/Is.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/Promise.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/PromiseInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/PromisorInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/RejectedPromise.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/RejectionException.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/TaskQueue.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/TaskQueueInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/Utils.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/functions.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/promises/src/functions_include.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/CHANGELOG.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/LICENSE Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/README.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/composer.json Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/AppendStream.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/BufferStream.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/CachingStream.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/DroppingStream.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/Exception/MalformedUriException.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/FnStream.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/Header.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/HttpFactory.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/InflateStream.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/LazyOpenStream.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/LimitStream.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/Message.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/MessageTrait.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/MimeType.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/MultipartStream.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/NoSeekStream.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/PumpStream.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/Query.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/Request.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/Response.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/Rfc7230.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/ServerRequest.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/Stream.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/StreamWrapper.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/UploadedFile.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/Uri.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/UriComparator.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/UriNormalizer.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/UriResolver.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/guzzlehttp/psr7/src/Utils.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/LICENSE Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/README.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/composer.json Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Grant/AbstractGrant.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Grant/AuthorizationCode.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Grant/ClientCredentials.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Grant/Exception/InvalidGrantException.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Grant/GrantFactory.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Grant/Password.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Grant/RefreshToken.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/OptionProvider/HttpBasicAuthOptionProvider.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/OptionProvider/OptionProviderInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/OptionProvider/PostAuthOptionProvider.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Provider/AbstractProvider.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Provider/Exception/IdentityProviderException.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Provider/GenericProvider.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Provider/GenericResourceOwner.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Provider/ResourceOwnerInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Token/AccessToken.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Token/AccessTokenInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Token/ResourceOwnerAccessTokenInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Tool/ArrayAccessorTrait.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Tool/BearerAuthorizationTrait.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Tool/GuardedPropertyTrait.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Tool/MacAuthorizationTrait.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Tool/ProviderRedirectTrait.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Tool/QueryBuilderTrait.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Tool/RequestFactory.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/league/oauth2-client/src/Tool/RequiredParameterTrait.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/paragonie/random_compat/LICENSE Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/paragonie/random_compat/build-phar.sh Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/paragonie/random_compat/composer.json Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/paragonie/random_compat/lib/random.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/paragonie/random_compat/other/build_phar.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/paragonie/random_compat/psalm-autoload.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/paragonie/random_compat/psalm.xml Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-client/CHANGELOG.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-client/LICENSE Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-client/README.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-client/composer.json Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-client/src/ClientExceptionInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-client/src/ClientInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-client/src/NetworkExceptionInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-client/src/RequestExceptionInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-factory/.gitignore Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-factory/LICENSE Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-factory/README.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-factory/composer.json Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-factory/src/RequestFactoryInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-factory/src/ResponseFactoryInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-factory/src/ServerRequestFactoryInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-factory/src/StreamFactoryInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-factory/src/UploadedFileFactoryInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-factory/src/UriFactoryInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-message/CHANGELOG.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-message/LICENSE Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-message/README.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-message/composer.json Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-message/docs/PSR7-Interfaces.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-message/docs/PSR7-Usage.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-message/src/MessageInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-message/src/RequestInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-message/src/ResponseInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-message/src/ServerRequestInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-message/src/StreamInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-message/src/UploadedFileInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/psr/http-message/src/UriInterface.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/ralouphie/getallheaders/LICENSE Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/ralouphie/getallheaders/README.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/ralouphie/getallheaders/composer.json Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/ralouphie/getallheaders/src/getallheaders.php Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/symfony/deprecation-contracts/.gitignore Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/symfony/deprecation-contracts/CHANGELOG.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/symfony/deprecation-contracts/LICENSE Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/symfony/deprecation-contracts/README.md Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/symfony/deprecation-contracts/composer.json Diff File
add - application/core/plugins/AzureOAuthSMTP/vendor/symfony/deprecation-contracts/function.php Diff File
add - application/core/plugins/AzureOAuthSMTP/views/Help.twig Diff File
add - application/core/plugins/GoogleOAuthSMTP/GoogleOAuthSMTP.php Diff File
add - application/core/plugins/GoogleOAuthSMTP/config.xml Diff File
add - application/core/plugins/GoogleOAuthSMTP/views/Help.twig Diff File
add - application/libraries/PluginManager/EmailPluginBase.php Diff File
mod - application/libraries/PluginManager/PluginBase.php Diff File
add - application/libraries/PluginManager/SmtpOAuthPluginBase.php Diff File
mod - application/views/admin/globalsettings/_email.php Diff File
mod - application/views/admin/pluginmanager/overview.php Diff File
add - application/views/smtpOAuth/redirectToAuth.php Diff File
add - application/views/smtpOAuth/responseReceived.php Diff File
mod - assets/scripts/admin/globalsettings.js Diff File
mod - composer.json Diff File
add - composer.phar Diff File
mod - modules/admin/globalsettings/views/globalSettings_view.php Diff File
add - tests/data/plugins/EmailTestPlugin.php Diff File
add - tests/unit/plugins/EmailPluginTest.php Diff File
mod - vendor/composer/ClassLoader.php Diff File
mod - vendor/composer/autoload_psr4.php Diff File
mod - vendor/composer/autoload_static.php Diff File
mod - vendor/composer/installed.php Diff File
add - vendor/guzzlehttp/guzzle/LICENSE Diff File
add - vendor/guzzlehttp/guzzle/composer.json Diff File
add - vendor/guzzlehttp/guzzle/src/BodySummarizer.php Diff File
add - vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php Diff File
add - vendor/guzzlehttp/guzzle/src/Client.php Diff File
add - vendor/guzzlehttp/guzzle/src/ClientInterface.php Diff File
add - vendor/guzzlehttp/guzzle/src/ClientTrait.php Diff File
add - vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php Diff File
add - vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php Diff File
add - vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php Diff File
add - vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php Diff File
add - vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php Diff File
add - vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php Diff File
add - vendor/guzzlehttp/guzzle/src/Exception/ClientException.php Diff File
add - vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php Diff File
add - vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php Diff File
add - vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php Diff File
add - vendor/guzzlehttp/guzzle/src/Exception/RequestException.php Diff File
add - vendor/guzzlehttp/guzzle/src/Exception/ServerException.php Diff File
add - vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php Diff File
add - vendor/guzzlehttp/guzzle/src/Exception/TransferException.php Diff File
add - vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php Diff File
add - vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php Diff File
add - vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php Diff File
add - vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php Diff File
add - vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php Diff File
add - vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php Diff File
add - vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php Diff File
add - vendor/guzzlehttp/guzzle/src/Handler/Proxy.php Diff File
add - vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php Diff File
add - vendor/guzzlehttp/guzzle/src/HandlerStack.php Diff File
add - vendor/guzzlehttp/guzzle/src/MessageFormatter.php Diff File
add - vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php Diff File
add - vendor/guzzlehttp/guzzle/src/Middleware.php Diff File
add - vendor/guzzlehttp/guzzle/src/Pool.php Diff File
add - vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php Diff File
add - vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php Diff File
add - vendor/guzzlehttp/guzzle/src/RequestOptions.php Diff File
add - vendor/guzzlehttp/guzzle/src/RetryMiddleware.php Diff File
add - vendor/guzzlehttp/guzzle/src/TransferStats.php Diff File
add - vendor/guzzlehttp/guzzle/src/Utils.php Diff File
add - vendor/guzzlehttp/guzzle/src/functions.php Diff File
add - vendor/guzzlehttp/guzzle/src/functions_include.php Diff File
add - vendor/guzzlehttp/promises/LICENSE Diff File
add - vendor/guzzlehttp/promises/composer.json Diff File
add - vendor/guzzlehttp/promises/src/AggregateException.php Diff File
add - vendor/guzzlehttp/promises/src/CancellationException.php Diff File
add - vendor/guzzlehttp/promises/src/Coroutine.php Diff File
add - vendor/guzzlehttp/promises/src/Create.php Diff File
add - vendor/guzzlehttp/promises/src/Each.php Diff File
add - vendor/guzzlehttp/promises/src/EachPromise.php Diff File
add - vendor/guzzlehttp/promises/src/FulfilledPromise.php Diff File
add - vendor/guzzlehttp/promises/src/Is.php Diff File
add - vendor/guzzlehttp/promises/src/Promise.php Diff File
add - vendor/guzzlehttp/promises/src/PromiseInterface.php Diff File
add - vendor/guzzlehttp/promises/src/PromisorInterface.php Diff File
add - vendor/guzzlehttp/promises/src/RejectedPromise.php Diff File
add - vendor/guzzlehttp/promises/src/RejectionException.php Diff File
add - vendor/guzzlehttp/promises/src/TaskQueue.php Diff File
add - vendor/guzzlehttp/promises/src/TaskQueueInterface.php Diff File
add - vendor/guzzlehttp/promises/src/Utils.php Diff File
add - vendor/guzzlehttp/promises/src/functions.php Diff File
add - vendor/guzzlehttp/promises/src/functions_include.php Diff File
add - vendor/guzzlehttp/psr7/LICENSE Diff File
add - vendor/guzzlehttp/psr7/composer.json Diff File
add - vendor/guzzlehttp/psr7/src/AppendStream.php Diff File
add - vendor/guzzlehttp/psr7/src/BufferStream.php Diff File
add - vendor/guzzlehttp/psr7/src/CachingStream.php Diff File
add - vendor/guzzlehttp/psr7/src/DroppingStream.php Diff File

Issue History

Date Modified Username Field Change
2019-12-17 12:50 Indispirit New Issue
2019-12-18 16:00 DenisChenu Issue Monitored: DenisChenu
2019-12-18 16:01 DenisChenu Note Added: 55069
2022-05-18 14:51 Leithy Note Added: 69782
2022-05-18 14:51 Leithy Bug heat 254 => 256
2022-05-18 14:52 Leithy Issue Monitored: Leithy
2022-05-18 14:52 Leithy Bug heat 256 => 264
2022-05-18 14:56 DenisChenu Note Added: 69784
2022-05-18 14:56 DenisChenu Note Added: 69785
2022-05-19 13:09 Leithy Note Added: 69846
2022-05-19 13:09 Leithy File Added: image.png
2022-05-19 14:15 DenisChenu Note Added: 69852
2022-05-19 14:20 Leithy Note Added: 69853
2022-05-20 09:15 c_schmitz Note Added: 69897
2022-05-20 09:15 c_schmitz Bug heat 264 => 266
2022-05-20 11:25 Leithy Note Added: 69906
2022-05-20 11:42 Leithy Note Added: 69907
2022-09-25 19:25 netikja Issue Monitored: netikja
2022-09-25 19:25 netikja Bug heat 266 => 274
2022-10-18 17:00 c_schmitz Priority none => immediate
2022-10-18 17:00 c_schmitz Assigned To => gabrieljenik
2022-10-18 17:00 c_schmitz Status new => assigned
2022-10-18 17:01 c_schmitz Summary [feature request] OAuth implementation => OAuth support for SMTP & IMAP
2022-10-18 17:01 c_schmitz Project Feature requests => Bug reports
2022-10-20 21:49 gabrieljenik Note Added: 72371
2022-10-20 21:49 gabrieljenik Bug heat 274 => 276
2022-10-20 21:49 gabrieljenik Note Edited: 72371
2022-10-21 08:45 DenisChenu Note Added: 72372
2022-10-21 13:59 gabrieljenik Note Added: 72373
2022-10-21 14:09 DenisChenu Note Added: 72374
2022-10-26 10:22 c_schmitz Note Added: 72428
2022-10-26 15:40 gabrieljenik Note Added: 72436
2022-10-26 17:58 DenisChenu Note Added: 72440
2023-01-03 20:50 gabrieljenik Note Added: 73340
2023-01-09 17:54 gabrieljenik Note Added: 73405
2023-01-09 17:54 gabrieljenik File Added: image-2.png
2023-01-09 17:54 gabrieljenik File Added: image-3.png
2023-01-09 18:02 DenisChenu Note Added: 73406
2023-01-09 18:07 DenisChenu Note Edited: 73406
2023-01-24 21:58 gabrieljenik Note Added: 73551
2023-01-25 07:53 DenisChenu Note Added: 73554
2023-01-25 13:25 gabrieljenik Note Added: 73556
2023-02-20 12:00 guest Bug heat 276 => 282
2023-02-20 12:05 arpsh Note Added: 73883
2023-02-20 12:05 arpsh Bug heat 282 => 284
2023-02-20 16:29 gabrieljenik Note Added: 73885
2023-02-20 16:31 DenisChenu Note Added: 73886
2023-02-20 16:39 gabrieljenik Note Added: 73887
2023-02-20 16:42 DenisChenu Note Added: 73888
2023-02-21 14:28 gabrieljenik Note Edited: 73405
2023-02-21 14:30 gabrieljenik Note Edited: 73405
2023-02-21 15:13 gabrieljenik Note Added: 73907
2023-02-21 15:25 gabrieljenik Note Added: 73909
2023-02-21 16:04 gabrieljenik Note Added: 73911
2023-02-21 16:05 gabrieljenik Note Edited: 73911
2023-02-21 16:13 DenisChenu Note Added: 73912
2023-02-21 16:28 gabrieljenik Note Added: 73913
2023-02-21 16:32 DenisChenu Note Added: 73914
2023-02-21 16:37 gabrieljenik Note Added: 73915
2023-02-21 17:23 DenisChenu Note Added: 73916
2023-02-21 20:21 gabrieljenik Note Added: 73917
2023-02-21 20:24 Indispirit Issue Monitored: Indispirit
2023-02-21 20:24 Indispirit Bug heat 284 => 286
2023-02-21 20:24 Indispirit Issue End Monitor: Indispirit
2023-02-21 20:24 Indispirit Bug heat 286 => 284
2023-02-21 20:30 DenisChenu Note Added: 73918
2023-02-21 20:35 gabrieljenik Note Added: 73919
2023-02-21 20:37 DenisChenu Note Added: 73920
2023-02-21 23:56 gabrieljenik Note Added: 73923
2023-03-03 09:57 DenisChenu Note Added: 74021
2023-03-03 13:45 gabrieljenik Note Added: 74022
2023-03-03 18:02 DenisChenu Note Added: 74027
2023-03-03 18:53 gabrieljenik Note Added: 74028
2023-04-17 20:31 gabrieljenik Note Edited: 73556
2023-04-17 20:44 gabrieljenik Note Added: 74515
2023-04-26 14:23 gabrieljenik Assigned To gabrieljenik => tibor.pacalat
2023-04-26 14:23 gabrieljenik Status assigned => ready for testing
2023-04-26 14:23 gabrieljenik Complete LimeSurvey version number (& build) => dev
2023-04-26 14:28 gabrieljenik Note Added: 74647
2023-07-04 17:13 gabrieljenik Note Added: 75932
2023-07-24 12:44 guest Bug heat 284 => 290
2023-08-09 14:04 gabrieljenik Note Added: 76508
2023-08-09 14:22 tibor.pacalat Note Added: 76513
2023-08-09 14:22 tibor.pacalat File Added: image1.png
2023-08-09 14:22 tibor.pacalat File Added: image2.png
2023-08-09 14:22 tibor.pacalat File Added: image3.png
2023-08-09 14:22 tibor.pacalat Bug heat 290 => 292
2023-08-09 14:37 Indispirit Note Added: 76514
2023-08-09 14:37 Indispirit Bug heat 292 => 294
2023-09-14 18:07 tibor.pacalat Note Added: 77058
2023-10-09 16:24 tibor.pacalat Status ready for testing => resolved
2023-10-09 16:24 tibor.pacalat Resolution open => fixed
2023-10-10 10:17 c_schmitz Changeset attached => LimeSurvey master 1d6a6afc
2023-10-10 10:17 c_schmitz Note Added: 77598
2023-10-10 10:17 c_schmitz Assigned To tibor.pacalat => c_schmitz