Yapılan süreçlerde mail içerisinde veya formda bir dosya indirme linki oluşturmak gerekebiliyor. EBIFLow'a yüklenen bir dosyanın indirilebilir linki oluşturmak için aşağıdaki adımları uygulamanız gerekmektedir.
İlk olarak Web.config içerisinde generateAuthKey değerini true olarak düzenlemek gerekmektedir.
<generateAuthKey enabled="true" />
Eğer yoksa schUser tablosuna file.share kullanıcısı eklenir.
INSERT INTO schUser (Id,Name,[Description],Domain,[Disabled]) VALUES('2B33C1C7-FB31-46AC-8894-771444845922','file.share','Dis musterilerde dosya paylasmak için kullanılır','',0)
<SetVariable Name="$(KeyId)"> <Value Culture="" Target="Guid">NewGuid</Value> </SetVariable> <SetVariable Name="$(RaporId)"> <Evaluate Target="Guid" Culture=""><![CDATA[/*/RaporEkleri/Details/Template[last()]/Id]]></Evaluate> </SetVariable> <SetVariable Name="$(AuthKey)"> <GenerateAuthKey IdentityKey="$(KeyId)"> <Value Culture="" Target="None">$(RaporId)</Value> </GenerateAuthKey> </SetVariable> <SqlInsert Connection="Provider=SQLOLEDB;Persist Security Info=True;Initial Catalog=[EBIFLowVeritabaniAdi];Data Source=[EBIFLowVeritabaniSunucusu]; User ID=[User]; Password=[Password];" Table="wflTemporaryAccess"> <Columns> <Column Name="Id"> <Value Culture="" Target="Guid">$(KeyId)</Value> </Column> <Column Name="[User]"> <Value Culture="" Target="Guid">2B33C1C7-FB31-46AC-8894-771444845922</Value> </Column> <Column Name="ExpireDate"> <DateTimeAdd Part="Day"> <Value Culture="" Target="Date">Today</Value> <Value Culture="" Target="Integer">365</Value> </DateTimeAdd> </Column> </Columns> </SqlInsert> <Set Node="/*/Geribildirim/RaporLink"> <StringConcat> <Value Culture="" Target="None">$(EBIFlowWebUrl)</Value> <Evaluate Target="None" Culture=""><![CDATA[/*/Sabitler/WebApp]]></Evaluate> <Value Culture="" Target="None">FileAttachment/$(RaporId).aspx?auth=$(AuthKey)</Value> </StringConcat> </Set>
Şimdi yukarıdaki kod bloğunu parça parça inceleyelim.
Bir link oluşturduğunuz zaman bu linki iki farklı durum için kullanmanız gerekecektir. Bu örnekte indirilebilir linki herkese açık olarak oluşturuyor olacağız. Bunun için oluşturulacak URL'de AuthKey adında bir queryString değeri oluşturulması gerekiyor.
<SetVariable Name="$(KeyId)"> <Value Culture="" Target="Guid">NewGuid</Value> </SetVariable>
Öncelikle bir Guid değeri üretip bir değişkende saklıyoruz.
<SetVariable Name="$(RaporId)"> <Evaluate Target="Guid" Culture=""><![CDATA[/*/RaporEkleri/Details/Template[last()]/Id]]></Evaluate> </SetVariable>
İndirilecek dosyanın Id bilgisini bir değişkende tutuyoruz. Bu dosyanın formda dosya eklerinde ekli olduğu varsayılmıştır.
<SetVariable Name="$(AuthKey)"> <GenerateAuthKey IdentityKey="$(KeyId)"> <Value Culture="" Target="None">$(RaporId)</Value> </GenerateAuthKey> </SetVariable>
Oluşturulan KeyId ve RaporId değişkenleri ile birlikte bir key üretiyoruz ve bu değeri AuthKey değişkeninde saklıyoruz.
<SqlInsert Connection="Provider=SQLOLEDB;Persist Security Info=True;Initial Catalog=[EBIFLowVeritabaniAdi];Data Source=[EBIFLowVeritabaniSunucusu]; User ID=[User]; Password=[Password];" Table="wflTemporaryAccess"> <Columns> <Column Name="Id"> <Value Culture="" Target="Guid">$(KeyId)</Value> </Column> <Column Name="[User]"> <Value Culture="" Target="Guid">2B33C1C7-FB31-46AC-8894-771444845922</Value> </Column> <Column Name="ExpireDate"> <DateTimeAdd Part="Day"> <Value Culture="" Target="Date">Today</Value> <Value Culture="" Target="Integer">7</Value> </DateTimeAdd> </Column> </Columns> </SqlInsert>
User tablosunda bulunan anonim kullanıcı için wflTemporaryAccess tablosunda geçici erişim için yetkilendirme kaydı oluşturuyoruz. Bu kayıt oluşturulurken istediğiniz süreyi verebilirsiniz. Örnekte bir haftalık bir süre verilmiştir.
<Set Node="/*/Geribildirim/RaporLink"> <StringConcat> <Value Culture="" Target="None">$(EBIFlowWebUrl)</Value> <Evaluate Target="None" Culture=""><![CDATA[/*/Sabitler/WebApp]]></Evaluate> <Value Culture="" Target="None">FileAttachment/$(RaporId).aspx?auth=$(AuthKey)</Value> </StringConcat> </Set>
Artık indirmek linki oluşturulabilir hale geldi. Linki oluşturup bir node içerisinde saklıyoruz. Bu linki artık isterseniz mail içerisine, isterseniz form içerisine ekleyebilirsiniz. EBIFlowWebUrl değişkeni EBIFLow web base adresini size verecektir. Eğer EBIFLow web sitesi IIS üzerinde bir application olarak eklenmiş ise URL oluşturulurken onu ayrıca belirtmeniz gerekebilir.