@@ -227,9 +227,9 @@ pub fn token(req: Request, app: AppContext) -> Response {
227227 }
228228}
229229
230- pub fn app ( req : Request , _app : AppContext ) -> Response {
230+ pub fn app ( req : Request , app : AppContext ) -> Response {
231231 use <- wisp . require_method ( req , http . Get )
232- render_html ( lti_html . client_app ( ) )
232+ render_html ( lti_html . client_app ( app ) )
233233}
234234
235235fn unauthorized_response ( ) -> Response {
@@ -371,8 +371,8 @@ fn launch_session_from_claims(
371371 use sub <- result . try ( required_string_claim ( claims , "sub" ) )
372372 use issuer <- result . try ( required_string_claim ( claims , "iss" ) )
373373 use audience <- result . try ( required_audience_claim ( claims ) )
374- let name = optional_string_claim ( claims , "name" ) |> result . unwrap ( sub )
375374 let email = optional_string_claim ( claims , "email" ) |> result . unwrap ( "" )
375+ let name = preferred_name_from_claims ( claims )
376376 let roles = optional_roles_claim ( claims )
377377 let context_title = optional_context_title_claim ( claims )
378378
@@ -387,6 +387,31 @@ fn launch_session_from_claims(
387387 ) )
388388}
389389
390+ fn preferred_name_from_claims ( claims : Dict ( String , Dynamic ) ) -> String {
391+ let name = optional_string_claim ( claims , "name" ) |> result . unwrap ( "" )
392+ let given_name =
393+ optional_string_claim ( claims , "given_name" ) |> result . unwrap ( "" )
394+ let family_name =
395+ optional_string_claim ( claims , "family_name" ) |> result . unwrap ( "" )
396+ let combined_name = string . trim ( given_name <> " " <> family_name )
397+
398+ first_non_empty ( [ name , combined_name ] )
399+ }
400+
401+ fn first_non_empty ( values : List ( String ) ) -> String {
402+ case values {
403+ [ value , .. rest ] -> {
404+ let trimmed = string . trim ( value )
405+
406+ case trimmed == "" {
407+ True -> first_non_empty ( rest )
408+ False -> trimmed
409+ }
410+ }
411+ [ ] -> ""
412+ }
413+ }
414+
390415fn required_string_claim (
391416 claims : Dict ( String , Dynamic ) ,
392417 key : String ,
0 commit comments