/* Copyright (c) Xerox Corporation 1998-2002. All rights reserved. Use and copying of this software and preparation of derivative works based upon this software are permitted. Any distribution of this software or derivative works must comply with all applicable United States export control laws. This software is made available AS IS, and Xerox Corporation makes no warranty about the software, its performance or its conformity to any specification. Display.java */ package observer; import java.awt.Frame; import java.awt.Panel; import java.awt.Container; import java.awt.Component; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.BorderLayout; /* * Display is the container class that holds all the views of the * colored number. * In this demo, it holds buttons. */ class Display extends Panel { protected Frame frame = new Frame("Subject/Observer Demo"); Display() { frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); frame.add(this, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } void addToFrame(Component c) { add(c); frame.pack(); } } tip-broker'>3rdparty/stable29/sabre-dav-itip-broker Nextcloud server, a safe home for all your data: https://github.com/nextcloud/serverwww-data
aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_external/js/oauth2.js
blob: 2556bf45cae575ae834e1df43818cb16a5e20022 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
$(document).ready(function() {

	OCA.External.Settings.mountConfig.whenSelectAuthMechanism(function($tr, authMechanism, scheme, onCompletion) {
		if (authMechanism === 'oauth2::oauth2') {
			var config = $tr.find('.configuration');
			config.append($(document.createElement('input'))
				.addClass('button auth-param')
				.attr('type', 'button')
				.attr('value', t('files_external', 'Grant access'))
				.attr('name', 'oauth2_grant')
			);

			onCompletion.then(function() {
				var configured = $tr.find('[data-parameter="configured"]');
				if ($(configured).val() == 'true') {
					$tr.find('.configuration input').attr('disabled', 'disabled');
					$tr.find('.configuration').append($('<span/>').attr('id', 'access')
							.text(t('files_external', 'Access granted')));
				} else {
					var client_id = $tr.find('.configuration [data-parameter="client_id"]').val();
					var client_secret = $tr.find('.configuration [data-parameter="client_secret"]')
						.val();
					if (client_id != '' && client_secret != '') {
						var params = {};
						window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) {
							params[key] = value;
						});
						if (params['code'] !== undefined) {
							var token = $tr.find('.configuration [data-parameter="token"]');
							var statusSpan = $tr.find('.status span');
							statusSpan.removeClass();
							statusSpan.addClass('waiting');
							$.post(OC.filePath('files_external', 'ajax', 'oauth2.php'),
									{
										step: 2,
										client_id: client_id,
										client_secret: client_secret,
										redirect: location.protocol + '//' + location.host + location.pathname,
										code: params['code'],
									}, function(result) {
										if (result && result.status == 'success') {
											$(token).val(result.data.token);
											$(configured).val('true');
											OCA.External.Settings.mountConfig.saveStorageConfig($tr, function(status) {
												if (status) {
													$tr.find('.configuration input').attr('disabled', 'disabled');
													$tr.find('.configuration').append($('<span/>')
															.attr('id', 'access')
															.text(t('files_external', 'Access granted')));
												}
											});
										} else {
											OC.dialogs.alert(result.data.message,
													t('files_external', 'Error configuring OAuth2')
													);
										}
									}
							);
						}
					}
				}
			});
		}
	});

	$('#externalStorage').on('click', '[name="oauth2_grant"]', function(event) {
		event.preventDefault();
		var tr = $(this).parent().parent();
		var configured = $(this).parent().find('[data-parameter="configured"]');
		var client_id = $(this).parent().find('[data-parameter="client_id"]').val();
		var client_secret = $(this).parent().find('[data-parameter="client_secret"]').val();
		if (client_id != '' && client_secret != '') {
			var token = $(this).parent().find('[data-parameter="token"]');
			$.post(OC.filePath('files_external', 'ajax', 'oauth2.php'),
				{
					step: 1,
					client_id: client_id,
					client_secret: client_secret,
					redirect: location.protocol + '//' + location.host + location.pathname,
				}, function(result) {
					if (result && result.status == 'success') {
						$(configured).val('false');
						$(token).val('false');
						OCA.External.Settings.mountConfig.saveStorageConfig(tr, function(status) {
							window.location = result.data.url;
						});
					} else {
						OC.dialogs.alert(result.data.message,
							t('files_external', 'Error configuring OAuth2')
						);
					}
				}
			);
		}
	});

});