Community

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
mzimmerman
Community Coach
Community Coach

Preventing default email from being changed

Jump to solution

We appreciate the option that Canvas allows for users to create multiple channels to be notified within the system.  However, we are seeing the same issues described inhttps://community.canvaslms.com/message/21238 , where LTI links to external services make use of the default email address to create accounts, and users changing their default email from the official school email is causing problems with with those external services.

From the previously mentioned discussion, it appears that the way to prevent this is to add Javascript to the theme to hide the option for changing the default email address.  (We already have the "Users can delete their institution-assigned email address" setting un-checked...)

However, my JS coding isn't great, and I haven't been able to figure out the JS needed to make this work.  Has anyone else got some code that will do it?

Thanks!

1 Solution

Accepted Solutions
bneporadny
Community Champion

Hi Michael,

The way I have been able to do this for my schools is to add the following lines to our custom css file. 

.email_meta {
display: none;
}

View solution in original post

9 Replies
bneporadny
Community Champion

Hi Michael,

The way I have been able to do this for my schools is to add the following lines to our custom css file. 

.email_meta {
display: none;
}

Hi Brian,

Thanks!  I was (mistakenly) fiddling with the JS file, but I see that this goes in the CSS, and that seems to do the trick!

Mike

ColinMurtaugh
Community Champion

Hi Michael --

Rather than preventing users from choosing a different default email address, you can configure your LTI tools to prefer the officially-supplied email address.  For LTI tools that use the email address as the unique user identifier (which is terrible but unfortunately all too common), preferring the SIS email address means that the tool will receive the official email address, regardless of what address the user has chosen as their default. 

I don't think this is possible to set via the UI, but it can be set via the API.  The specific parameter is:

tool_configuration[prefer_sis_email] 

This approach lets users keep the full flexibility of choosing their default email address, but also gives the LTI tool a stable email address to key off of. 

--Colin

Thanks, Colin.  That would be even better, really, though it sounds like something that will have to be individually set for each of the LTIs...

quinalan
New Member

The lines of CSS above disable the right-panel default email selector, but it is still possible to click on "Edit settings" and choose a different default email address from the drop-down menu in the main body of the page.  I've added a few more lines of code that strip the default-email drop-down when the "Edit settings" button is activated:

 

.email_meta {
display: none;
}

#default_email_id {
display: none;
}

So far, that seems to have sealed-off the ability for non-admins to change default email addresses. 

sendres
Community Member

We ran into this issue when setting up our Zoom integration. We fixed this by setting the Zoom side to look for the custom_sis_email_address parameter, which Canvas sends as part of the LTI launch. This delivers the institutional email address that was imported to Canvas from our student information system.

When we first started using this parameter, we had to do some cleanup to ensure every existing Canvas account had a value in this custom_sis_email_address field. For any account that didn’t, such as the few accounts someone had created through the GUI in the past, we created a users.csv file and did a SIS import of their email address to set the value. Since then, everything has been flawless.

And since that cleanup, we've refrained from creating any Canvas user accounts using the GUI interface. We always create a small users.csv and import it so the custom_sis_email_address parameter will be properly set.

 

Happy to help you set this up if you need assistance.

Hi ,

I am facing the same issue, so lucky that I find out your reply. It is very useful.

I have a few questions about your steps, would you mind to answer me.

1. Is it using LTI variable substitutions (https://canvas.instructure.com/doc/api/file.tools_variable_substitutions.html) to create a custom field 'sis_email_address'. After it is created, the parameter is called 'custom_sis_email_address', right? If yes, what below value (xxxxxxxx) should be set to map this sis_email_address field in LTI setting?

    e.g.

sis_email_address=xxxxxxxx

2. As you stated, your institution created a user.csv file to did a SIS import. However, according to the document, I cannot find the field related to sis_email_address from user.csv (https://canvas.instructure.com/doc/api/file.sis_csv.html). Would you please provide more idea about it?

3. From Zoom Pro setting, which field and what value should be inputted to catering 'custom_sis_email_address'?

Many thanks your help and I look forward to your reply.

sendres
Community Member

Hello @ctcck,

Please pardon my rather imprecise response; my working memory was not quite clear on all the details.

You are correct that we are using variable substitutions; the full substitution expression we used in the setup is:

 

sis_email_address=$vnd.Canvas.Person.email.sis

 

The LTI launch payload will then contain a custom_sis_email address parameter with the institutionally assigned email address. Next, in the LTI Pro configuration, you can set this parameter as the one you want Zoom to look for:

Configuration screen showing the option to set the Email or Employee Unique ID Attribute Name field.Configuration screen showing the option to set the Email or Employee Unique ID Attribute Name field.

Please note: we are running the older LTI 1.1 version and probably should update to 1.3 at some point.

With regard to the users.csv file, you can just create the CSV file as described in the API document you referenced. The column header is simply called "email" as they describe. Internally, Canvas will know this "email" field was populated via SIS import and therefore this value should be sent out using the $vnd.Canvas.Person.email.sis parameter.

Hi @sendres ,

Thanks your information. It is very useful for our setting.

The lucky thing is our Canvas' login id is a full institution's email address which is unique.

So, we plan to set the substitution expression as below:

 

sis_email_address=$Canvas.user.loginId

 

 

Then, we will follow you to set the substitution parameter in the Zoom Pro LTI field as 'custom_sis_email_address'.

Hope it works for me.

Thanks again