Hi,
Are you using cas maven overlay
(https://github.com/apereo/cas-overlay-template/tree/5.3)?
If so, for the java class, you should create a new file with those names,
and put it in *src/main/java*.
For the package name use your own defined package name.
For others, I already specified the location to you.
If you still have problem, please specified what you tried and see if we
can help you from there.
Cheers!
- Andy
On Thursday, 16 August 2018 01:22:44 UTC+8, Fernando Gomez wrote:
>
>
> 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 [email protected].
To view this discussion on the web visit
https://groups.google.com/a/apereo.org/d/msgid/cas-user/fd9ec917-6058-4457-a829-8b12171c11c0%40apereo.org.