All files / src/auth IAuthOptions.ts

100% Statements 27/27
100% Branches 21/21
100% Functions 7/7
100% Lines 27/27
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 98 99 100 101 102 1031x                                                                                                           1x 15x     1x 12x     1x 21x 21x   21x 6x     15x     1x 24x 24x   24x 3x     21x     1x 27x 27x   27x 3x     24x     1x 21x     1x 6x    
import * as url from 'url';
 
export interface IBasicOAuthOption {
  clientId: string;
}
 
export interface IOnlineAddinCredentials extends IBasicOAuthOption {
  clientSecret: string;
  realm?: string;
}
 
export interface IOnPremiseAddinCredentials extends IBasicOAuthOption {
  realm: string;
  issuerId: string;
  rsaPrivateKeyPath: string;
  shaThumbprint: string;
}
 
export interface IUserCredentials {
  username: string;
  password: string;
}
 
export interface IOnpremiseFbaCredentials extends IUserCredentials {
  fba: boolean;
}
 
export interface IOnpremiseUserCredentials extends IUserCredentials {
  domain?: string;
  workstation?: string;
}
 
export interface IAdfsUserCredentials extends IUserCredentials {
  domain?: string;
  adfsCookie?: string;
  adfsUrl: string;
  relyingParty: string;
}
 
export interface IOnDemandCredentials {
  ondemand: boolean;
  electron?: string;
  force?: boolean;
  persist?: boolean;
}
 
export type IAuthOptions =
  IOnlineAddinCredentials
  | IOnPremiseAddinCredentials
  | IUserCredentials
  | IOnpremiseUserCredentials
  | IAdfsUserCredentials
  | IOnDemandCredentials;
 
export function isAddinOnlyOnline(T: IAuthOptions): T is IOnlineAddinCredentials {
  return (T as IOnlineAddinCredentials).clientSecret !== undefined;
}
 
export function isAddinOnlyOnpremise(T: IAuthOptions): T is IOnPremiseAddinCredentials {
  return (T as IOnPremiseAddinCredentials).shaThumbprint !== undefined;
}
 
export function isUserCredentialsOnline(siteUrl: string, T: IAuthOptions): T is IUserCredentials {
  let host: string = (url.parse(siteUrl)).host;
  let isOnPrem: boolean = host.indexOf('.sharepoint.com') === -1 && host.indexOf('.sharepoint.cn') === -1;
 
  if (!isOnPrem && (T as IUserCredentials).username !== undefined && !isAdfsCredentials(T)) {
    return true;
  }
 
  return false;
}
 
export function isUserCredentialsOnpremise(siteUrl: string, T: IAuthOptions): T is IOnpremiseUserCredentials {
  let host: string = (url.parse(siteUrl)).host;
  let isOnPrem: boolean = host.indexOf('.sharepoint.com') === -1 && host.indexOf('.sharepoint.cn') === -1;
 
  if (isOnPrem && (T as IUserCredentials).username !== undefined && !isAdfsCredentials(T)) {
    return true;
  }
 
  return false;
}
 
export function isFbaCredentialsOnpremise(siteUrl: string, T: IAuthOptions): T is IOnpremiseFbaCredentials {
  let host: string = (url.parse(siteUrl)).host;
  let isOnPrem: boolean = host.indexOf('.sharepoint.com') === -1 && host.indexOf('.sharepoint.cn') === -1;
 
  if (isOnPrem && (T as IOnpremiseFbaCredentials).username !== undefined && (T as IOnpremiseFbaCredentials).fba) {
    return true;
  }
 
  return false;
}
 
export function isAdfsCredentials(T: IAuthOptions): T is IAdfsUserCredentials {
  return (T as IAdfsUserCredentials).adfsUrl !== undefined;
}
 
export function isOndemandCredentials(T: IAuthOptions): T is IOnDemandCredentials {
  return (T as IOnDemandCredentials).ondemand !== undefined;
}