Hi Andy, I'm really grateful for your answer, please, could you tell me 
where I put what you mention to me?

El jueves, 9 de agosto de 2018, 23:06:18 (UTC-3), Andy Ng escribió:
>
> Hi Fernando,
>
> I previously also tried to execute some JavaScript after user login 
> successful and before redirected back to service, and I successfully 
> created an example.
>
> However, I didn't need to know whether it is Facebook, Google, or Email, 
> unlike your requirement. I just need to execute some JS for all users.
>
> I will give you my example, but you might want to research more on how to 
> determine the Delegate Authentication client (i.e. whether is FB, Google or 
> email).
>
> So, the following is what I changed (CAS 5.3.0) *[It is still a demo 
> testing code, I am not responsible if there is any security / performance 
> issue]*:
>
>
> ===================================================================================================================================
> *1. ExampleCasWebflowContextConfiguration*
>
> @Configuration("exampleCasWebflowContextConfiguration")
> @EnableConfigurationProperties(CasConfigurationProperties.class)
> public class ExampleCasWebflowContextConfiguration{
>     @Autowired
> FlowBuilderServices builder;
>    
>     @Autowired
>     FlowDefinitionRegistry loginFlowRegistry;
>     
>
>     @Autowired
>     FlowDefinitionRegistry logoutFlowRegistry;
>     
>     @Autowired
>     private CasConfigurationProperties casProperties;    
>     
>
>     @Autowired
>     private ApplicationContext applicationContext;
>
>     @Bean
>     public CasWebflowConfigurer defaultWebflowConfigurer() {
>         final ExampleDefaultWebflowConfigurer c = new 
> ExampleDefaultWebflowConfigurer (builder, loginFlowRegistry, 
> applicationContext, casProperties);
>         c.setLogoutFlowDefinitionRegistry(logoutFlowRegistry);
>         c.initialize();
>         return c;
>     }    
>     
>
>     @Bean
>     @RefreshScope
>     public Action redirectToServiceAction() {
>         return new ExampleRedirectToServiceAction(responseBuilderLocator);
>     }
> }
>
>
>
>
> ===================================================================================================================================
> *2. ExampleDefaultWebflowConfigurer*
> public class ExampleDefaultWebflowConfigurer extends 
> DefaultLoginWebflowConfigurer{
>     
> public ExampleDefaultWebflowConfigurer(FlowBuilderServices 
> flowBuilderServices,
> FlowDefinitionRegistry flowDefinitionRegistry, ApplicationContext 
> applicationContext,
> CasConfigurationProperties casProperties) {
> super(flowBuilderServices, flowDefinitionRegistry, applicationContext, 
> casProperties);
> }
>
>     /**
>      * Create redirect end state.
>      * 
>      * @param flow the flow
>      */
>     @Override
>     protected void createRedirectEndState(final Flow flow) {
>         createEndState(flow, CasWebflowConstants.STATE_ID_REDIRECT_VIEW, 
> "casGenericRedirectView");
>         //createEndState(flow, CasWebflowConstants.STATE_ID_REDIRECT_VIEW, 
> "requestScope.url", true);
>     }
> }
>
>
>
>
> ===================================================================================================================================
> 3. *ExampleRedirectToServiceAction*
>
> public class ExampleRedirectToServiceAction extends 
> RedirectToServiceAction {
> public ExampleRedirectToServiceAction(ResponseBuilderLocator 
> responseBuilderLocator) {
> super(responseBuilderLocator);
> }
>
>
>     protected Event finalizeResponseEvent(final RequestContext 
> requestContext, final WebApplicationService service,
>                                           final Response response) {
>          String client = ........; //Here you need to research on how you 
> can receive the client (e.g. Google Facebook)
>
>         requestContext.getRequestScope().put("client", client);
>     
>     Event defaultFinalizeResponseEvent = 
> super.finalizeResponseEvent(requestContext, service, response);
>     return defaultFinalizeResponseEvent;
>     }
>
> }
>
>
>
>
> ===================================================================================================================================
> *4. src/main/resources/templates/casGenericRedirectView.html*
>
> <html>
> <head>
> <script>
>
> /*<![CDATA[*/
> var url = /*[[${url}]]*/ null; //This is the url to return to the user 
> after login success
> var client = /*[[${client}]]*/ null; //This is your client
>
> //You do your javascript execution here......
> /*]]>*/
>
>
> location.replace(url); // proceed to redirect user to service
> // you might also want to redirect user when JavaScript is not enable, you 
> will need to research more on that and put in this file as well
> </script>
> </head>
>
>
>
> ===================================================================================================================================
> *5. src/main/resoruces/META-INF/spring.factories*
>
> org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.www.ExampleCasWebflowContextConfiguration
>
>
> ===================================================================================================================================
> With this change, you will be able to execute JavaScript after user login 
> success and before they are redirected to their service.
>
> Cheers!
> - Andy
>
>
> On Friday, 10 August 2018 04:06:27 UTC+8, Fernando Gomez wrote:
>>
>>
>> Thanks Ray, I'm interested in having javascript executed in the user's 
>> browser that collects data about the service
>>
>> El jueves, 9 de agosto de 2018, 14:36:54 (UTC-3), Fernando Gomez escribió:
>>>
>>>
>>> Hello, I have the following problem, in my implementation of CAS SSO, I 
>>> can login for: Facebook, Google and Email, I need to do is that when the 
>>> login is successful in any of the entry methods, I can run a script, i.e. 
>>> If I login with Facebook and is a successful, I must then execute a script 
>>> that takes statistics through Facebook, the same for google and the 
>>> same with Email, my question is how can I, know when the login is 
>>> successful, to do a condition that allows me to execute my script?
>>>
>>

-- 
- Website: https://apereo.github.io/cas
- Gitter Chatroom: https://gitter.im/apereo/cas
- List Guidelines: https://goo.gl/1VRrw7
- Contributions: https://goo.gl/mh7qDG
--- 
You received this message because you are subscribed to the Google Groups "CAS 
Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to cas-user+unsubscr...@apereo.org.
To view this discussion on the web visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/bef28e2a-f3dd-4870-ae07-de72cf6eba37%40apereo.org.

Reply via email to