Revision 246 (by ahitrov, 2012/09/18 18:31:16) Google+ auth
<script type="text/javascript">
<!--
opener.location.reload(true);
close();
//-->
</script>
<pre><% Dumper($google_connect) %></pre>
<%doc>

   use LWP::UserAgent;
   use JSON::XS;
   use URI;
   use Encode;
   use URI;
   use URI::QueryParam;
   my $JSON = JSON::XS->new->utf8;

Manual redirect:
   use session::AUTH::Google;
   my $site = $state->development ? 'www' : 'www';
   my $google_connect = session::AUTH::Google->new(
		google_redirect_uri   => 'http://'.$site.'/oauth/google.html',
	);


</%doc>
<%once>

   my $site = $state->development ? '' : '';
   use session::AUTH::Google;

</%once>
<%args>

	$code	=> undef

</%args>
<%init>

   my $res;
   my $info;

   my $google_connect = session::AUTH::Google->new;
   my $auth_url = $google_connect->authorize_url;
   if ( $code ) {
	my $local_session = $google_connect->authenticate( code => $code );
	if ( ref $local_session && exists $local_session->{id} ) {
		my $profile = $keeper->{users}->get_profile( id => $local_session->{id} )	if exists $keeper->{users};
		if ( ref $profile ) {
			unless ( exists $local_session->{avatar} ) {
				my $avatar = $profile->get_image('avatar');
				$session->{avatar} = ref $avatar && exists $avatar->{filename} ? $avatar->{mini}{'54x54'}{filename} : undef;
				$keeper->{session}->store_value (
					name    => $profile->name_full,
					last_name       => $profile->name_family,
					first_name      => $profile->name_part,
					avatar  => $session->{avatar},
				);
			} else {
				$keeper->{session}->store_value (
					name    => $profile->name_full,
					last_name       => $profile->name_family,
					first_name      => $profile->name_part,
				);
			}
		}
	}
   } elsif ( $auth_url ) {
	$m->redirect($auth_url->as_string);
   } else {
	&abort404	unless $DEBUG;
   }

</%init>

Небольшая справка по веткам

cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.

koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.

utf8 – актуальная ветка, заточенная под UTF-8.

Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.